Маршрутизация: 'администратор' => верный по сравнению с 'префиксом' => 'администратор в CakePHP

Привет я настраиваю администратора, направляющего в CakePHP.

Это - мой текущий маршрут:

Router::connect('/admin/:controller/:action/*', array('admin' => true, 'prefix' => 'admin', 'controller' => 'pages', 'action' => 'display', 'home'));

Это хорошо работает, но я не понимаю, каков различие между 'администратором' => верный, и 'префиксом' => 'администратор'.

Когда я опустил 'prefix' => 'admin', маршрутизатор не использовал бы admin_index и вместо этого просто использовал бы index. Таким образом какой смысл 'admin' => true?

14
задан Rob 30 June 2010 в 18:30
поделиться

1 ответ

Установив 'prefix' => 'admin' , вы сообщаете CakePHP, что хотите использовать префикс admin для этого маршрута; в основном это означает, что вы хотите использовать действия и представления контроллера, имена которых имеют префикс admin_ . Эта часть вам уже известна, и с ней, вероятно, все будет хорошо.

Однако при создании маршрутов во второй аргумент передаются любые ключи массива, которые не распознаются CakePHP (т.е. не ваш обычный контроллер , action , plugin , prefix stuff) устанавливаются как именованные параметры во время запросов, соответствующих этому маршруту.

Добавление 'admin' => true в данном случае является просто именованным параметром, но оно имеет свои преимущества. Во-первых, это может сделать код более лаконичным.

/* Determine if a request came through admin routing */
// without:
if ($this->params['prefix'] == 'admin') {}
// with:
if ($this->params['admin']) {}

/* Create a link that is reverse-routed to an admin prefixed route */
// without:
$html->link('...', array('prefix' => 'admin', 'controller' => 'users'));
// with:
$html->link('...', array('admin' => true, 'controller' => 'users'));

Во-вторых, он обеспечивает обратную совместимость с тем, как маршрутизация администратора работала в CakePHP 1.2 (последняя строка из приведенного выше примера показывает, как вы могли бы создать ссылки маршрутизации администратора в 1.2). Таким образом, разработчики, переходящие с 1.2 на 1.3, могут предотвратить необходимость изменения ссылок во всем своем приложении, сохранив флаг 'admin' => true в своих маршрутах (и добавив префикс 'prefix' => 'admin ' один).

Наконец, установка такого настраиваемого флага с именованным параметром и использование его в вашем приложении вместо ссылки на ваш маршрут с помощью точной строки означает, что вам никогда не придется менять ссылки, если вы измените префикс на что-то другое. (скажем, от admin до administrator или edit ) ... хотя это своего рода спорный вопрос, так как вам нужно будет переименовать все свои admin _ * действия и представления контроллера. :)

27
ответ дан 1 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: