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