路由器前缀
在 CakePHP 2.x 中,前缀发生了一些变化。
您现在可以有多个前缀,但必须在core.php
文件中声明它们。
Configure::write('Routing.prefixes', array('admin','api','json'));
这将声明 3 个前缀,并且无需修改路由表以使其工作。这个词的prefix
意思是它在调度到控制器时放在动作名称之前。
例如;
class DocumentsController extends AppController
{
public index() { ... }
public admin_index() { ... }
public api_index() { ... }
public json_index() { ... }
}
当请求这些 URL 之一时,CakePHP 将调用正确的操作。
http://example.com/documents/index
http://example.com/admin/documents/index
http://example.com/api/documents/index
http://example.com/json/documents/index
你不能做的是一次使用多个前缀。以下将不起作用。
http://example.com/admin/json/documents/index
这需要自定义路由,因为 CakePHP 不知道要调用哪个动作。
当一个动作被调用时,你可以在请求参数中添加前缀。
public function beforeFilter()
{
if(isset($this->request->params['admin']))
{
// an admin prefix call is being made
}
}