在一个控制器cakephp中调用动作,如controller / action / action

时间:2012-10-29 20:39:12

标签: cakephp controller action

我有一个名为" Movies"所以链接是" localhost / Movies"并在此控制器中执行一些操作,例如" localhost / Movies / view / [id]" ," localhost / Movies / view / category / [id]"如果我想按类别名称和子类别名称制作路径,例如" localhost / Movies / English / new"

我怎么能在cakephp中做这样的事情2.我的项目现在喜欢" localhost / English / new"但我想把电影放在这条路径上,以使其更具可修复性,如果我想创建一个新类别,只需在我的数据库中添加一列。

谢谢

2 个答案:

答案 0 :(得分:0)

如果我理解,也许可以为您的行动创建自定义路线:

在app / config / routes.php中:

  

Router :: connect('/ movies /:category /:subcategory',array('controller'=>'movies','action'=>'index'));

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

  

echo $ this-> params ['category'];

     

echo $ this-> params ['subcategory'];

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

中阅读相关内容

答案 1 :(得分:0)

CakePHP中的默认路由如下:

mydomain/controller/action/param1/param2/param3/param4/...

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

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:

localhost/objects/index/              //$category==null, $subcategory==null
localhost/objects/index/foods/        //$category=='foods', $subcategory==null
localhost/objects/index/foods/green/  //$category=='foods', $subcategory=='green'

这允许您在同一操作中控制许多选项。