php - 如何从 cakephp 的 url 中删除操作名称?

标签 php .htaccess cakephp url-rewriting

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

我面临的问题是 cakephp 需要

www.example.com/Controllername/viewname

但是我的要求是这样的

www.example.com/Controllername/param1/param2

如果我通过这种方式,它会查找 param1 作为 Controller ,将 param2 作为 View 。

最初应该是这样的:

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')));

和你的 Controller :

// 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 - 两者都必须出现在本示例中。

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

关于php - 如何从 cakephp 的 url 中删除操作名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069601/

相关文章:

php foreach 中的 foreach 中的 foreach

wordpress - 在 wordpress 中更改 .htaccess 文件

.htaccess - 临时重定向到维护页面

mysql - 处理 Cakephp 中的数据库连接错误

php - CakePHP 关联错误 : Call to a member function find() on a non-object

php - MYSQL PHP 单数据库应用性能

php - 带有 Nginx 的子目录上的 Wordpress 使用无输入文件错误的代理通行证

java - 如何重复发布和接收数据但使应用程序仍然负责编辑

apache - 试图通过 htaccess 强制使用 https,但发生了奇怪的行为。它删除了一个正斜杠

php - cakephp 从助手中访问 View 属性/变量