如何解决CakePHP 2.10路由一个唯一的段状多个模型
我一直试图通过允许/ slug访问页面和用户模型/控制器来修改客户网站。我已经阅读了CakePHP 2 Routing的所有书籍,但是并没有详细介绍如何完成这样的事情。我已经尝试过了:
app / config / routes.php
App::uses('SlugRoute','Lib/Routing/Route');
Router::connect('/:slug',['controller' => 'pages','action' => 'display'],['routeClass' => 'SlugRoute','model' => 'Page']);
Router::connect('/:username',['controller' => 'users','action' => 'view'],'model' => 'User']);
app / Lib / Routing / Route / SlugRoute.php
App::uses('Page','Model');
App::uses('User','Model');
App::uses('CakeRoute','Routing/Route');
App::uses('ClassRegistry','Utility');
class SlugRoute extends CakeRoute {
public function parse($url) {
$params = parent::parse($url);
if (empty($params)) {
return false;
}
$model = $this->options['model'];
$this->{$model} = ClassRegistry::init($model);
$result = $this->{$model}->find('first',[
'conditions' => [
$model.'.slug' => $params['slug'],],'fields' => array($model.'.id'),'recursive' => -1,]);
if ($result) {
$params['pass'] = array($result[$model]['id']);
print_r($params);
return $params;
}
return false;
}
}
遗憾的是,这适用于页面,但不适用于用户。我已经考虑过修改返回的参数并设置控制器/模型,视图等。但是我不认为这是执行此操作的正确方法。有什么建议或解决方案吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。