Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.02.2015 17:09:42

Tremor

роуты + мультиязычность

Всем привет, столкнулся с такой проблемой

В filters.php поставил код:
Route::filter('localization', function() {
    App::setLocale(Route::input('lang'));
});

В routes.php :
Route::group(['prefix' => '{lang?}', 'before' => 'localization'], function() {

    Route::get('/','MainController@index');
    Route::get('/product', 'ProductController@index');
    Route::get('/registration', 'AuthController@registration');
    Route::post('/registration', 'AuthController@registration');

});

Когда я перехожу по ссылкам http://mysite.loc/ru/registration , http://mysite.loc/en/registration - то все ок
Но если я перейду на  http://mysite.loc/registration -  то он подумает, что 'registration' это язык и соответственно установит его в локаль и роуты не будут работать. Как правильно сделать что бы в 2-х вариантах работало одинаково  http://mysite.loc/ru/registration  и http://mysite.loc/registration ?

Дублировать роуты явно не варинат.

И еще хотел узнать: При отправке через форму запросов в роутах всегда нужно прописывать (Route::post('/registration', 'AuthController@registration');) или есть универсальное решение?
Заранее спасибо за ответы

#2 11.03.2015 16:46:58

Pianist

Re: роуты + мультиязычность

Tremor, как вы реализовывали базу данных для мультиязычного сайта если не секрет?) Мучаюсь уже несколько дней с этим вопросом.

#3 10.04.2015 13:30:34

Arat
Откуда: Киев
Сообщений: 116

Re: роуты + мультиязычность

+1 за базу и подписываюсь на тему

Не в сети

#4 11.04.2015 15:53:02

Re: роуты + мультиязычность

Так указывайте язык по умолчанию, если язык не задан.

Не в сети

#5 11.04.2015 15:59:18

Re: роуты + мультиязычность

Pianist пишет:

Tremor, как вы реализовывали базу данных для мультиязычного сайта если не секрет?) Мучаюсь уже несколько дней с этим вопросом.

Может это поможет?
http://habrahabr.ru/post/192228/

Не в сети

#6 15.04.2015 17:11:55

Re: роуты + мультиязычность

Мой способ маршрутизации, пока не подводил ☺ если есть какие то комментарии или поправки буду рад услышать ☺

Table «languages» fields [’abbr’, ’title’, ’is_default’]

Language.php

PHP
class Language extends Eloquent {

    protected 
$table 'languages';

    public 
$timestamps false;

    public 
$code;

    public function 
set() {
        
$code Request::segment(1);
        if(
$code) {
            
$language Language::whereAbbr($code)->first();
            if(
$language) {
                
$this->code $code;
                
$this->setVariables($language);
            } else {
                
header("Location: " Config::get('app.url') . "/" $this->getDefault());
                exit;
            }
        } else {
            
$this->code $this->getDefault();
        }
        return 
$this->code;
    }

    private function 
getDefault() {
        
$language Language::whereIsDefault(true)->first();
        
$this->setVariables($language);
        return 
$language->abbr;
    }

    private function 
setVariables($language) {
        
Session::put('language_id'$language->id);
        
Session::put('language_abbr'$language->abbr);
        
Session::put('language_title'$language->title);
        
define('LANG'$language->abbr);
        
App::setLocale($language->abbr);
    }

    public static function 
change($language) {
        
$url Request::url();
        
$url_new str_replace('/'.Request::segment(1), '/'.$language$url);
        return 
$url_new;
    }

}

routes.php

PHP
$language = new Language();
$language->set();

Route::get('/', function() use ($language) {
    return 
Redirect::to('/' $language->code);
});

Route::group(array('prefix' => $language->code), function() {
// твоя маршрутизация
});

Изменено lieroes (15.04.2015 17:14:00)

Не в сети

#7 16.04.2015 10:09:51

Arat
Откуда: Киев
Сообщений: 116

Re: роуты + мультиязычность

lieroes пишет:

Мой способ маршрутизации, пока не подводил smile если есть какие то комментарии или поправки буду рад услышать smile
Table "languages" fields ['abbr', 'title', 'is_default']

'is_default' - boolean?

Изменено Arat (16.04.2015 10:10:22)

Не в сети

#8 17.04.2015 17:07:36

Re: роуты + мультиязычность

tinyint = 0/1

Вообще, в некоторых проектах для перевода подключаю poedit и тогда в App::setLocale нужно указывать локаль языка (en_US, ru_RU), вместо аббревиатуры.

Изменено lieroes (17.04.2015 17:12:28)

Не в сети

#9 22.07.2015 12:52:20

Tremor

Re: роуты + мультиязычность

А как быть с аякс запросами при такой структуре?

Подвал раздела