Я использую Кохану 3.3
Цель
Я хотел бы, чтобы мое приложение выбирало правильный файл представления на основе языка в URL-адресе. Так, например:
mydomain.com/es/foobar
загрузит файл представления на испанском языке в мой контроллер Foobar. Это работает для всего, кроме базового URL. Прямо сейчас, если вы перейдете к mydomain.com/es/
или mydomain.com/en/
, я получу ответ 404. Я хотел бы, чтобы он направлялся к контроллеру индекса в /classes/Controller/Index.php
. Я не уверен, что мне здесь не хватает. Любые указатели будут оценены.
ЗАМЕТКА:
mydomain.com
корректно переходит на страницу на английском языке.
Я могу опубликовать некоторый код контроллера, если это необходимо, но я совершенно уверен, что это просто проблема маршрутизации.
Текущие маршруты
/*I don't think this one is even getting fired even though it's first */
Route::set('mydomain_home', '(<lang>/)',
array(
'lang' => '(en|es)'
))
->filter(function($route, $params, $request)
{
$lang = is_empty($params['lang']) ? 'en' : $params['lang'];
/*This debug statement is not printing*/
echo Debug::vars('Language in route filter: '.$lang);
$params['controller'] = $lang.'_Index';
return $params; // Returning an array will replace the parameters
})
->defaults(array(
'controller' => 'Index',
'action' => 'index',
'lang' => 'en',
));;
/*This one works for the non-base URL e.g. mydomain.com/es/page1 */
Route::set('mydomain_default', '(<lang>/)(<controller>(/<action>(/<subfolder>)))',
array(
'lang' => '(en|es)',
))
->filter(function($route, $params, $request) {
// Replacing the hyphens for underscores.
$params['action'] = str_replace('-', '_', $params['action']);
return $params; // Returning an array will replace the parameters.
})
->defaults(array(
'controller' => 'Index',
'action' => 'index',
'lang' => 'en',
));