【问题标题】:CakePHP: make global routes for admin pluginCakePHP:为管理插件创建全局路由
【发布时间】:2013-09-24 21:18:03
【问题描述】:

所以我开始将我们网站的管理面板制作为插件。而且我能够将每个请求(如 domain.com/admin 或 domain.com/admin/users 或 domain.com/admin/pages/edit/5 )重定向到适当的控制器和来自管理插件的操作。 喜欢这个:

 Router::connect('/admin', array('plugin' => 'admin', 'controller' => 'index', 'action' => 'index'));
 Router::connect('/admin/users/list', array('plugin' => 'admin', 'controller' => 'users', 'action' => 'list'));

但这意味着我必须为几乎每个 URL 编写单独的路由???或者实际上 - 对于每个动作......那么 - 有没有办法在全球范围内设置它? ...

例如:

 Router::connect('/admin/users/*', array('plugin' => 'admin', 'controller' => 'users'));

甚至更好:

 Router::connect('/admin/*', array('plugin' => 'admin'));

因为最后两个例子根本不起作用......

编辑:CakePHP 版本目前是最新的 - 2.4.1。

【问题讨论】:

  • 请务必提及您使用的确切 CakePHP 版本。
  • 好的,我会尽量记住... :) ...我编辑了我的问题 ;) ...

标签: php cakephp plugins routes admin


【解决方案1】:

通常你不应该为插件创建这样的路由,基本映射是开箱即用的,即如果你的插件被命名为admin,那么/admin/users/list将自动映射到插件admin,控制器users,动作list

一个例外是您的/admin 路由,默认情况下这将在AdminController 上查找index。因此,要映射到 IndexController 上的 index,您需要一个自定义路线,就像您的问题中的路线一样:

Router::connect('/admin', array('plugin' => 'admin', 'controller' => 'index', 'action' => 'index'));

除此之外,它应该按原样工作,以防您没有任何其他前面的规则会覆盖默认行为,例如Router::connect('/*', ...)。如果有这样的规则并且您无法更改它们,那么您可以通过以下方式连接插件的基本路由:

Router::connect('/admin/:controller/:action/*', array('plugin' => 'admin'));
Router::connect('/admin/:controller/*', array('plugin' => 'admin', 'action' => 'index'));
Router::connect('/admin/*', array('plugin' => 'admin', 'controller' => 'index', 'action' => 'index'));

请注意,这需要放在 覆盖默认行为的其他路由之前!

另见http://book.cakephp.org/2.0/en/development/routing.html

附带说明,list 作为动作名称可能不起作用,这应该会引发解析器错误,因为listreserved keyword。因此,如果这不仅仅是一个示例,如果您想使用 /list 作为 URL 中的操作名称,您将需要一个额外的路由。

【讨论】:

  • 嗯 ...好吧,这对于控制器和操作来说是正确的......确实...... :) ...但对于管理面板的起始页面 - 它不是...... . ...所以如果我只尝试 domain.com/admin - 然后它要求我在 Plugin/Admin/ 中创建类 AdminController.php ...
  • 对了,我已经在代码示例中添加了必要的路由,但忘了说它不是标准路由的一部分。我会更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 2013-05-29
  • 2014-06-21
  • 1970-01-01
  • 2012-07-25
  • 2020-06-21
相关资源
最近更新 更多