Установив 'prefix' => 'admin'
, вы сообщаете CakePHP, что хотите использовать префикс admin
для этого маршрута;в основном это означает, что вы хотите использовать действия контроллера и представления, имена которых имеют префикс admin_
.Эта часть вам уже известна, и, вероятно, с этим все будет работать нормально.
При создании маршрутов все ключи массива, передаваемые во второй аргумент, не распознаются CakePHP (т. Е. Не обычнымcontroller
, 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_*
.:)