2016-09-22 58 views
0

所以我在我的控制下:不一致設置變量的CakePHP

$employee_options = array(
    'conditions' => array('Employee.id' => $this->employee_id), 
    'recursive' => 4, 
); 

$employees = $this->Employee->find('all', $employee_options); 
$this->set('employees', $employees); 

$initial_dept_id = $this->Employee->field('department_id', array('id' => $this->employee_id)); 

第一我是有這樣的

$index_chosen = $this->Employee->field('index_chosen_section', array('id' => $this->employee_id)); 
$this->set('initial_dept_id', $initial_dept_id); 
$this->set('$index_chosen', $index_chosen); 

然後,我改變$ index_chosen到這一點,當我不能讓它的工作:

$index_chosen = $employees[0]; 
$this->set('initial_dept_id', $initial_dept_id); 
$this->set('$index_chosen', $index_chosen); 

這是我的觀點:

<pre> 
    <?php print_r($employees[0]) ?> 
</pre> 
<pre> 
    <?php print_r($index_chosen); ?> 
</pre> 

兩種方法(在控制器中)都導致$ index_chosen不顯示任何內容。在第二種方法中,我打印的是同樣的東西,但只有第一個節目。任何想法爲什麼發生這種情況?由於

+0

請務必指定您正在使用的框架版本。 – Dave

回答

0

不要在您的->set()上半年使用$

$this->set('$index_chosen', $index_chosen); // <-- NO 

$this->set('index_chosen', $index_chosen); // <-- YES 

在過去,我相信蛋糕也會自動駝峯你的變量,所以要根據你所使用的版本,使得後上述更改將刪除$,如果$index_chosen變量仍未顯示在您的視圖中,則可以嘗試使用$indexChosen代替(無論如何,這對您的變量都是推薦的情況)。

$indexChosen = $employees[0]; 
$this->set('indexChosen', $indexChosen); // <-- EVEN BETTER 

側面說明:

當設置多個變量,而不是把每一個在它自己的路線,這是常見的做法是使用PHP's compact()

$this->set(compact('initial_dept_id', 'index_chosen'));