将params传递到自定义URL路由

时间:2016-07-12 07:31:56

标签: cakephp routing cakephp-2.0 cakephp-2.3

我创建了这样的自定义网址:

Router::connect('/subjects.details', array(
    'plugin' => 'subjects',
    'controller' => 'subjects',
    'action' => 'details'
));

然而,该动作/视图需要一个参数。

所以当我去localhost/foo/subjects.details/12之类的链接时,它会让我错过控制器错误。

  

缺少控制器

     

错误:找不到Subjects.detailsController。

     

错误:在文件中创建下面的Subjects.detailsController类:   应用程序/控制器/ Subjects.detailsController.php

如何为此网址添加ID参数?

3 个答案:

答案 0 :(得分:1)

您必须在网址和操作中定义参数:

  Router::connect('/subjects.details/:id', array(
        'plugin' => 'subjects',
        'controller' => 'subjects',
        'action' => 'details'
    ));

答案 1 :(得分:0)

Lasers回答了另一个错误。它基本上将新密钥'id' => '1'添加到$this->params数组中,而不是添加到$this->params的{​​{1}}密钥数组中。通过将其更改为此可行:

'passed'

答案 2 :(得分:0)

这是一个可行的解决方案。您必须通过参数,然后它将开始工作。这是方法-

  Router::connect('/subjects.details/:id', [
    'plugin' => 'subjects',
    'controller' => 'subjects',
    'action' => 'details'
   ],
   [
    'pass' => ['id']
   ]
  );

您的方法应如下所示-

public function details($id){
  //....
}

我希望这会有所帮助。谢谢。