У меня есть приложение, которое использует несколько префиксов и, хотя и не часто, также необычно добавлять префикс по мере продвижения. Что делает это болезненным, так это то, что метод Router::url()
по умолчанию предполагает, что любой построенный url должен наследовать префикс текущей страницы, если префикс явно не указан.Есть ли способ предотвратить «префиксное наследование»?
Это, кажется, очень преднамеренное действие, поэтому я предполагаю, что большинство людей считают его более полезным, чем нет, но я считаю его более удобочитаемым/поддерживаемым, просто создавая свои URL-адреса с префиксами, где URL-адрес нужен один и оставьте его, когда он этого не сделает. Давным-давно я создал AppHelper::url()
, чтобы переопределить Helper::url()
, который ничего не принимает и только строит URL-адрес с префиксом, когда он явно запрашивается, и это огромная помощь для ссылок, генерируемых в представлениях.
Существует, однако, еще один сценарий, который я бы хотел отменить и не нашел «чистого» способа его решения. Рассмотрим не прошедшего проверку пользователя, который добавил ссылку на ресурс администратора (например, /admin/thing_that_needs_to_be_administered/some_action
). S/he нажимает эту закладку, но не регистрируется, поэтому s/he перенаправляется. Вместо того, чтобы перенаправляться на /users/login
, он/она отправляется в /admin/users/login
, которого не существует. Упс.
Кто-нибудь еще нашел способ сделать это, что им действительно нравится? Идея состоит в том, что не нужно явно указывать каждый префикс на false во всем, что перенаправление сделано. Это просто слишком много обслуживания при добавлении префикса.
Я думаю, что это становится проще в Cake 2, но мы работаем на Cake 1.3.
Любые мысли были бы высоко оценены.
Это компонент Auth, который выполняет перенаправление? Возможно, вам понадобится создать обработчик в своем предшественнике вашего контроллера приложения, если нужно, при необходимости, обработать перенаправление. –
В этом примере да, но так же легко можно было бы перенаправить пользовательскую переадресацию, если страница с другим префиксом вызывается без какого-либо необходимого значения. –