我的工作CakePHP的项目。 我一直在使用.htaccess文件删除的index.php从URL,现在我想从URL中移除视图名称和添加一些其他两种不同的参数。 假如我选择的国家和城市,然后这两个参数应该出现在URL上选择它们。
我面临的问题是需要的CakePHP
www.example.com/Controllername/viewname
但我的要求是这样的
www.example.com/Controllername/param1/param2
如果我通过这种方式查找参数1作为控制器和参数2的视图。
最初应该是这样的:
www.example.com/Controllername/
在你的APP/routes.php
:
// www.example/com/Controllername
Router::connect('/Controllername',
array('controller'=>'Controllername', 'action'=>'index'));
// www.example.com/Controllername/param1/param2
Router::connect('/Controllername/:param1/:param2',
array('controller'=>'Controllername', 'action'=>'index'),
array('pass' => array('param1', 'param2')));
和你的控制器:
// set to null/a value to prevent missing parameter errors
public function index($param1=null, $param2=null) {
//echo $param1 . ' and ' . $param2;
}
当生成链接:
array('controller'=>'Controllername', 'action'=>'index', 'param1'=>'foo', 'param2'=>'bar');
订购事宜。 更改paramX
到任何你想要的,即country
和town
注意,这不包括: controllername/param1
-两者都必须存在于这个例子。
还有其他的方法来实现这一目标。
我想你应该首先确保国防部重写模块启用。 你不应该有,如果是启用了mod_rewrite从使用.htaccess中的URL删除的index.php。 要了解如何启用你的web服务器的手册和CakePHP的默认的.htaccess应该能够处理路由的休息你。
之后,你有能重写模块,可以修改为在你的APP / routes.php文件以前的答案中指出@Ross路线:
// www.example/com/Controllername
Router::connect('/Controllername',
array('controller'=>'Controllername', 'action'=>'index'));
// www.example.com/Controllername/param1/param2
Router::connect('/Controllername/:param1/:param2',
array('controller'=>'Controllername', 'action'=>'index'),
array('pass' => array('param1', 'param2')));