Есть ли способ предотвратить «наследование префиксов»? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть приложение, которое использует несколько префиксов, и, хотя и не часто, добавление префикса также не редкость.Что делает это болезненным, так это то, что метод Router::url() по умолчанию предполагает, что любой созданный URL-адрес должен наследовать префикс текущей страницы, если префикс явно не указан.

Это кажется очень преднамеренным действием, поэтомуЯ предполагаю, что большинство людей находят это более полезным, чем нет, но я нахожу гораздо более удобочитаемым / поддерживаемым, чтобы просто создавать свои URL-адреса с префиксами, где URL-адрес нужен, и исключать его, когда это не так.Давным-давно я создал AppHelper::url() для переопределения Helper::url(), который ничего не предполагает и создает URL-адрес с префиксом, когда он явно запрашивается, и это огромная помощь для ссылок, генерируемых в представлениях.

Однако естьдругой сценарий, который я хотел бы переопределить и не нашел «чистого» способа сделать это.Рассмотрим пользователя, не прошедшего проверку подлинности и добавившего ссылку на ресурс администратора (например, /admin/thing_that_needs_to_be_administered/some_action).Он нажимает на эту закладку, но не вошел в систему, поэтому он / она перенаправляется.Вместо перенаправления на /users/login он / она отправляется на /admin/users/login, которого не существует.Упс.

Кто-нибудь еще нашел способ сделать это, что им действительно нравится?Идея состоит в том, чтобы не устанавливать явно каждый префикс в значение false везде, где выполняется перенаправление.Это просто слишком много обслуживания, когда добавляется префикс.

Я думаю, что это становится проще в Cake 2, но мы работаем на Cake 1.3.

Любые мысли будут высоко оценены.

1 Ответ

0 голосов
/ 08 февраля 2012

Я бы предложил попробовать этот маршрут, если вы еще этого не сделали:

РЕДАКТИРОВАТЬ: Извините, loginAction

<?php
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login', 'admin' => false );
?>

Это явно задает URL для входа в систему.

...