CakePHP 中命名参数的路由配置
Posted
技术标签:
【中文标题】CakePHP 中命名参数的路由配置【英文标题】:Routes configuration for named arguments in CakePHP 【发布时间】:2011-03-17 06:55:17 【问题描述】:在我的 Cake 应用程序中,我有一个控制器“completed_projects”。它的 index 动作不带参数并列出了一些项目。可以访问不同的页面
example.com/completed_projects/index/page:23
等
我想让网址是这样的:
example.com/portfolio/page23
显然我需要为此制定一些路线。我试过很多,比如:
Router::connect('/portfolio/page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('pass'=>'page:num', 'num'=>'[0-9]+'));
还有:
Router::connect('/portfolio/:page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('named'=>'num', 'page'=>'page', 'num'=>'[0-9]+'));
我也尝试一次又一次地修改它们,但它们都不能正常工作。
我正在使用 Cakephp 1.3。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:Router::connect('/portfolio/page:page_num',
array('controller'=>'completed_projects', 'action'=>'index'),
array('page_num'=>'[\d]+')
);
在您的控制器中,使用以下命令访问 page_num:
$this->params['page_num'];
【讨论】:
这会将 page_num(如 23)传递给操作,但我希望传递一个命名参数,如传递 page:2。感谢您考虑提供帮助。 再次感谢奥斯卡。您能否详细说明如何将此(或任何)变量用于分页?不需要在控制器中仅获取传递的变量。我希望它被命名为参数(如 page:33),以便它可以用于分页。有可能吗? 啊,你的意思是要改变普通分页器 URL 的样子? 在这种情况下你可能想看看这个,据我所知,没有更干净的方法可以做到这一点:***.com/questions/1078558/…以上是关于CakePHP 中命名参数的路由配置的主要内容,如果未能解决你的问题,请参考以下文章