我想将值从一个控制器传递到另一个控制器。 例如,我有一个会议控制器,我想创建一个新的事件。 我想将会议ID传递给事件,以确保这两个对象相关联。 我想使用beforeFilter方法存储在ivar $会议中。
这是我在事件控制器中的beforeFilter函数
public function beforeFilter() {
parent::beforeFilter();
echo '1 ' + $this->request->id;
echo '2 ' + $this->request['id'];
echo $this->request->params['id'];
if(isset( $this->request->params['id'])){
$conference_id = $this->request->params['id'];
}
else{
echo "Id Doesn't Exist";
}
}
每当我将网址更改为:
http://localhost:8888/cake/events/id/3
或
http://localhost:8888/cake/events/id:3
我收到一条错误消息,指出id未定义。
我该怎么办?
答案 0 :(得分:4)
在Conferences
控制器
$this->Session->write('conference_id', $this->request->id); // or the variable that stores the conference ID
在Events
控制器
$conferenceId = $this->Session->read('conference_id');
当然,最重要的是你需要
public $components = array('Session');
答案 1 :(得分:4)
当您通过网址传递数据时,您可以通过
访问它$this->passedArgs['variable_name'];
例如,如果您的网址是:
http://localhost/events/id:7
然后您使用此行访问该ID
$id = $this->passedArgs['id'];
当您访问通过url接受参数的控制器函数时,您可以像使用任何其他变量一样使用这些参数,例如,假设您的网址看起来像这样
http://localhost/events/getid/7
然后您的控制器功能应如下所示:
public function getid($id = null){
// $id would take the value of 7
// then you can use the $id as you please just like any other variable
}