2014-02-21 4 views
1

Я хочу передавать значения с одного контроллера на другой. Например, у меня есть контроллер конференции, и я хочу создать новое событие. Я хочу передать идентификатор конференции в событие, чтобы убедиться, что эти два объекта связаны. Я хотел бы сохранить на конференции ivar $, используя метод beforeFilter.CakePHP, передающий значения между контроллерами

Вот моя 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"; 
     } 
} 

Всякий раз, когда я изменить URL-то вроде:

http://localhost:8888/cake/events/id/3 

или

http://localhost:8888/cake/events/id:3 

я получаю ошибку о том, что id не определен.

Как я могу продолжить?

ответ

4

, когда вы передаете данные через URL вы можете доступ к нему через

$this->passedArgs['variable_name']; 

Например, если ваш URL является:

http://localhost/events/id:7 

Затем вы получаете доступ, что идентификатор с этой линией

$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 
} 
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'); 
Смежные вопросы