Обновление:
Я использую совместно используемую библиотеку CakePHP для нескольких приложений (все они живут в поддоменах).Они не все вложенные одинаково;так, например, в файловой системе у меня может быть:
/foo
.htaccess
/1.0 (app)
/1.1 (app)
/1.2 (app)
...
/bar
.htaccess
/1.0 (app)
/1.1 (app)
/1.2 (app)
...
Где .htaccess в каждом просто определяет, какое приложение по умолчанию направляет запросы в эту подпапку, в то время как все они все еще доступныпо прямой ссылке (например, /foo/1.0/...
).
Кажется, что если я использую прямой URL (например, не переписанный .htaccess), он распознает маршруты соответствующим образом, но если URL переписан.htaccess, это не так;он вызовет AppError :: error404 () с выводом в конце вопроса.Мне это не кажется правильным ... если у кого-то есть понимание, это было бы замечательно.
Привет, ребята,
Я использую CakePHP 1.3 и имею маршрутизациювопрос.Суть концепции такова:
- Я хочу использовать стиль 'en_us' i18n / i10n, а не просто 'en'
- Я не использую встроенный i18n, потому чтотребований, чтобы некоторые языки отображали страницы с локализованными представлениями (
views/:i18n/...
), а другие - с общими представлениями с вызовами __()
Итак, у меня есть маршруты, настроенные так:
$sI18nFormat = '/[a-z]{2}_[a-z]{2}/';
Router::connect('/:i18n/:controller/:action',
array('controller' => ':controller', 'action' => ':action', 'i18n' => ':i18n'),
array('i18n' => $sI18nFormat));
Router::connect('/:i18n/:controller',
array('controller' => ':controller', 'action' => 'index', 'i18n' => ':i18n'),
array('i18n' => $sI18nFormat));
Router::connect('/:controller/:action',
array('controller' => ':controller', 'action' => ':action', 'i18n' => 'en_us'),
array('i18n' => $sI18nFormat));
Router::connect('/:controller',
array('controller' => ':controller', 'action' => 'index', 'i18n' => 'en_us'),
array('i18n' => $sI18nFormat));
, где очевидно, что маршруты зеркально отображены, за исключением того, что для одного передан динамический параметр i18n
, а для другого - статический.
Проблема заключается в использовании определенных значений для :i18n
- дляНапример, с en_us
все в порядке, но fr_fr
, кажется, заставляет Cake искать FrController
(не FrFrController
) - по-видимому, потому что он пытается создать магию со встроенным префиксом i18n fr
.
В качестве примера, вот что дается AppError::error404
:
Array
(
[className] => FrController
[webroot] => /path/to/webroot
[url] => _fr
[base] => /path/to/webroot
)
Возможно ли: a) заставить Cake остановить это так, чтобы мои маршруты работали, как ожидалось, или b) сообщить Cake, какой формат мне нуженмой i18n / i10n, так что он не пытается сделать это по-своему?
Любые мысли будутбыть оцененным.