2

我正在做 cakephp 项目。我已经使用 .htaccess 文件从 URL 中删除了 index.php,现在我想从 URL 中删除视图名称并添加其他两个不同的参数。假设我选择国家和城市,那么这两个参数应该出现在选择它们的 URL 中。

我面临的问题是 cakephp 需要

www.example.com/Controllername/viewname

但我的要求是这样的

www.example.com/Controllername/param1/param2

如果我通过这种方式它会寻找 param1 作为控制器和 param2 作为视图。

最初应该是这样的:

www.example.com/Controllername/
4

2 回答 2

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为您想要的任何内容,countrytown

请注意,这不包括:controllername/param1- 在此示例中两者都必须存在。

还有其他方法可以实现这一点。

于 2012-12-28T12:46:42.760 回答
0

我认为您应该首先确保启用了mod-rewrite模块。如果启用了 mod_rewrite,您不必使用 .htaccess 从 url 中删除 index.php。检查如何在您的网络服务器手册中启用它,并且 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')));
于 2014-09-28T18:57:09.380 回答