Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет, столкнулся с такой проблемой
В 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');) или есть универсальное решение?
Заранее спасибо за ответы
Tremor, как вы реализовывали базу данных для мультиязычного сайта если не секрет?) Мучаюсь уже несколько дней с этим вопросом.
+1 за базу и подписываюсь на тему
Не в сети
Так указывайте язык по умолчанию, если язык не задан.
Не в сети
Tremor, как вы реализовывали базу данных для мультиязычного сайта если не секрет?) Мучаюсь уже несколько дней с этим вопросом.
Может это поможет?
http://habrahabr.ru/post/192228/
Не в сети
Мой способ маршрутизации, пока не подводил если есть какие то комментарии или поправки буду рад услышать
Table «languages» fields [’abbr’, ’title’, ’is_default’]
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;
}
}
$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)
Не в сети
Мой способ маршрутизации, пока не подводил если есть какие то комментарии или поправки буду рад услышать
Table "languages" fields ['abbr', 'title', 'is_default']
'is_default' - boolean?
Изменено Arat (16.04.2015 10:10:22)
Не в сети
Не в сети
А как быть с аякс запросами при такой структуре?
Страницы 1