我的CakePHP应用程序中有一个名为“Profiles”的控制器,这就是我的操作名为index:
function index($id = NULL) {
$this->set('profile', $this->Profile->findById($id));
}
因此,使用此方法传入id,我可以根据链接中的id返回正确的配置文件。
当我在一个名为view的操作上执行此操作时,这很好用,但是当我尝试在索引操作上执行此操作时,它会将我的id视为一个操作,并返回一个错误,指出该操作不存在。有没有办法在CakePHP中传递索引操作的id,或者它是否必须在索引之外的某个操作上进行操作?
干杯,
亚当。
答案 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