首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个控制器cakephp中的action调用action,比如controller/action/action

从一个控制器cakephp中的action调用action,比如controller/action/action
EN

Stack Overflow用户
提问于 2012-10-30 04:39:12
回答 2查看 413关注 0票数 0

我有一个叫做"Movies“的控制器,所以链接是"localhost/Movies”,如果我想通过类别名称和子类别名称创建一个路径,比如"localhost/Movies/view/id“,"localhost/Movies/view/ category /id”,那么这个控制器中就会有一些动作,比如"localhost/Movies/English/new“。

我的项目现在喜欢"localhost/English/ new“,但我想把电影放在这个路径中,使它更容易修复,如果我想创建一个新的类别,只需在我的数据库中添加一列。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-30 05:08:47

如果我理解的话,也许可以通过为您的操作创建自定义路由:

在app/config/routes.php中:

动作控制器数组(‘Router::connect('/movies/:category/:subcategory',’=>‘

’,‘’=>‘索引’);

您可以使用以下命令检索控制器中的值:

类别回显$

->params‘’category‘;

echo $this->params‘’subcategory‘;

您还可以在食谱http://book.cakephp.org/1.3/view/945/Routes-Configuration中了解到它

票数 0
EN

Stack Overflow用户

发布于 2012-10-30 06:11:56

CakePHP中的默认路由如下:

代码语言:javascript
复制
mydomain/controller/action/param1/param2/param3/param4/...

如果要向操作添加过滤器选项,只需向操作添加可选参数。

代码语言:javascript
复制
function index($category = null, $subcategory = null) {
   if(isset($subcategory)){
       //will execute if you pass both arguments
   }else if(isset($category)){
       //will execute if you pass one argument
   }else{
       //will execute if you pass no arguments
   }
}

编辑

在本例中,$category为param1,$subcategory为param2。重载函数可以接收1、2或无参数。例如,如果这是在ObjectsController中,则所有这些都是有效的URL:

代码语言:javascript
复制
localhost/objects/index/              //$category==null, $subcategory==null
localhost/objects/index/foods/        //$category=='foods', $subcategory==null
localhost/objects/index/foods/green/  //$category=='foods', $subcategory=='green'

这使您可以在同一操作中控制多个选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13129285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档