使用索引操作传递id - CakePHP 2.1

时间:2012-12-09 07:14:00

标签: cakephp-2.1

我的CakePHP应用程序中有一个名为“Profiles”的控制器,这就是我的操作名为index:

function index($id = NULL) {
    $this->set('profile', $this->Profile->findById($id));
}

因此,使用此方法传入id,我可以根据链接中的id返回正确的配置文件。

当我在一个名为view的操作上执行此操作时,这很好用,但是当我尝试在索引操作上执行此操作时,它会将我的id视为一个操作,并返回一个错误,指出该操作不存在。有没有办法在CakePHP中传递索引操作的id,或者它是否必须在索引之外的某个操作上进行操作?

干杯,

亚当。

3 个答案:

答案 0 :(得分:1)

如果您想将ID传递给您的方法,则必须访问带有ID的网址。

/profiles/index/<id_here>

Cake会神奇地加载/profiles/profiles/index。你不能在框外使用/profiles/<id>,这需要一个新的Route才能工作。

答案 1 :(得分:0)

如果您使用Bake功能创建控制器,则Index方法将用于显示Profile模型中的多条记录。

您在问题中显示的三行代码是否来自控制器的实际代码?

答案 2 :(得分:0)

这可以通过自定义路线完成。将参数传递给操作...

Router::connect('/mycontroller/:id', array('controller' => 'mycontroller', 'action' => 'index'), array('pass' => array('id') ) );

并在您的控制器中......

public function index( $id )

http://book.cakephp.org/3.0/en/development/routing.html#passing-parameters-to-action