0

我有一个名为“Movies”的控制器,所以链接是“localhost/Movies”,并且在这个控制器中有一些操作,例如“localhost/Movies/view/[id]”、“localhost/Movies/view/category/[id]”如果我想通过类别名称和子类别名称创建路径,例如“localhost/Movies/English/new”。

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

谢谢

4

2 回答 2

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中了解它

于 2012-10-29T21:08:46.747 回答
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'

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

于 2012-10-29T22:11:55.503 回答