cakephp 路由修改 Controller 名称/获取 Controller 名称
我创建了一条与此类似的路线:
Router::connect("/backend/:controller/:action/*");
现在我想将符合此模式的每个 Controller 路由重命名为类似 backend_:controller 的名称。
有点像:
Router::connect("/backend/:controller/:action/*", array('controller' => 'backend_:controller'));
示例:如果调用 URL www.example.com/backend/settings/myaction,它将路由到 Controller “backend_settings”并调用操作“myaction”!
但另一方面,如果有人调用 www.example.com/settings,它会路由到 Controller “设置”。
URL 应该保持它被调用的方式,cakePHP 应该只使用修改后的 Controller 名称!
我希望有人能指出我应该用于解决此问题的最佳解决方案。提前致谢!
请您参考如下方法:
您可以在指定路由时使用 routeClass
属性,并使用自定义路由类。
这是我对 CakeRoute
类的实现,它完全按照您的描述执行(将 Controller 前缀附加到您的 Controller ):
// ControllerPrefixRoute.php file in app/Routing/Route/
App::uses('CakeRoute', 'Routing/Route');
class ControllerPrefixRoute extends CakeRoute {
/**
* Parses a string url into an array. If a controller_prefix key is found it will be appended to the
* controller parameter
*
* @param string $url The url to parse
* @return mixed false on failure, or an array of request parameters
*/
public function parse($url) {
$params = parent::parse($url);
if (!$params) {
return false;
}
$params['controller'] = $params['controller_prefix'].'_'.$params['controller'];
return $params;
}
}
下面是如何使用它:
// inside routes.php file in app/Config/
App::uses('ControllerPrefixRoute', 'Routing/Route');
Router::connect("/:controller_prefix/:controller/:action/*", array(), array('routeClass' => 'ControllerPrefixRoute'));
所以这个 url /backend/settings/myaction
将调用 BackendSettingsController::myaction
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。