我有一个名为" Movies"所以链接是" localhost / Movies"并在此控制器中执行一些操作,例如" localhost / Movies / view / [id]" ," localhost / Movies / view / category / [id]"如果我想按类别名称和子类别名称制作路径,例如" localhost / Movies / English / new"
我怎么能在cakephp中做这样的事情2.我的项目现在喜欢" localhost / English / new"但我想把电影放在这条路径上,以使其更具可修复性,如果我想创建一个新类别,只需在我的数据库中添加一列。
谢谢
答案 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'
这允许您在同一操作中控制许多选项。