如何从URL中移除CakePHP的动作叫什么名字?(How to remove action nam

2019-07-17 15:34发布

我的工作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/

Answer 1:

在你的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到任何你想要的,即countrytown

注意,这不包括: controllername/param1 -两者都必须存在于这个例子。

还有其他的方法来实现这一目标。



Answer 2:

我想你应该首先确保国防部重写模块启用。 你不应该有,如果是启用了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')));


文章来源: How to remove action name from url in cakephp?