我正在开发cakephp项目。我已经使用.htaccess文件从URL中删除了index.php,现在我想从URL&中删除视图名称。添加其他两个变化的参数。假设我选择country&城市然后这两个参数应该在选择它们时出现在URL中。
我面临的问题是像cakephp一样
www.example.com/Controllername/viewname
但我的要求是这样的
www.example.com/Controllername/param1/param2
如果我通过这种方式,它会将param1视为控制器,将param2视为视图。
最初应该像:
www.example.com/Controllername/
答案 0 :(得分:2)
在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
- 在此示例中都必须存在。
还有其他方法可以实现这一目标。
答案 1 :(得分:0)
我认为您应首先确保启用 mod-rewrite 模块。如果启用了mod_rewrite,则不应该使用.htaccess从url中删除index.php。检查如何在您的网络服务器手册中启用它,并且cakephp的默认.htaccess应该能够为您处理剩余的路由。
启用重写模块后,您可以修改@Ross在上一个答案中指出的路线 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')));