通过设置'prefix' => 'admin'
你告诉 CakePHP 你想admin
为那个路由使用前缀 of;基本上意味着您要使用名称以 . 为前缀的控制器操作和视图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 中如何创建管理路由链接)。'admin' => true
因此,从 1.2 迁移到 1.3 的开发人员可以通过在路由中保留标志(并添加标志)来避免在整个应用程序中更改链接'prefix' => 'admin'
。
最后,通过使用命名参数设置这样的自定义标志并在您的应用程序中使用它而不是通过确切的字符串引用您的路由意味着您可以防止自己在将前缀更改为其他内容时更改链接(例如admin
to administrator
or edit
)...虽然这有点争议,因为您需要重命名所有admin_*
控制器操作和视图。:)