2016-02-22 84 views
-2

我是CakePHP的新手,我目前試圖讓我的表「流派」和「主題」中的所有行填充一些複選框,但是當我嘗試使用foreach時,我總是得到下面的錯誤:CakePHP Foreach不起作用

通知(8):未定義變量:流派[APP /視圖/頁/ register.ctp,線88]

警告(2):提供的foreach無效的參數() (APP/View/Pages/register.ctp,line 88)

警告(2):對的foreach()提供參數無效[APP /視圖/頁/ register.ctp,線98]

但是我設置 '流派',在我的GenresController '主題' 和ThemesController,但我不斷收到此錯誤。這裏是我的代碼:

register.ctp

<div id='stream'> 
      <?php 
      foreach ($genres as $genre): 
       echo $this->Form->checkbox('Genre.0.libelle', array(
        'value' => $genre['Genre']['id'], 
        'name' => $genre['Genre']['libelle'] 
       )); 
      endforeach; 
      ?> 
     </div> 
     <div id='webserie'> 
      <?php 
      foreach ($themes as $theme): 
       echo $this->Form->checkbox('Theme.0.libelle', array(
        'value' => $theme['Theme']['id'], 
        'name' => $theme['Theme']['libelle'] 
       )); 
      endforeach; 
      ?> 
     </div> 

GenresController:

App::uses('AppController', 'Controller'); 

/** 
* CakePHP GenresController 
* @author Sen 
*/ 
class GenresController extends AppController { 

    public function index() { 

     $this->set('genres', $this->Genre->find('all')); 
    } 

} 

ThemesController:

App::uses('AppController', 'Controller'); 

/** 
* CakePHP ThemesController 
* @author Sen 
*/ 
class ThemesController extends AppController { 

    public function index($id) { 
     $this->set('themes', $this->Theme->find('all')); 
    } 

} 

我試着陣列設置爲$風格就是這樣,但它說,我GenresController的指數沒有定義:

$genres = array(); 
$genres[0]['libelle'] = "Lamb"; 
$genres[1]['libelle'] = "Ham"; 

預先感謝您的幫助。

+0

您已經定義了'index'行動兩個控制器。但在'register,ctp'中使用這些變量。你應該把它們全部放在你正在呼叫的控制器的'register'中。 –

+0

你需要添加'$ this-> set('genres',$ this-> Genre-> find('all')); $ this-> set('themes',$ this-> Theme-> find('all'));'在你的AppController'beforefilter()'函數中。在那裏加載模型。 '從兩個控制器中刪除index()'代碼並在任何控制器中創建一個'register()'。 –

回答

0
App::uses('AppController', 'Controller'); 

class PagesController extends AppController { 
    public $uses = Array('Genre'); 

    public function register() { 
     $this->set('genres', $this->Genre->find('all')); 
    } 
} 

添加上面的代碼中註冊頁面控制器動作不要忘記使用模式

0
class GenresController extends AppController { 
    public $uses = array('Genre','Theme'); 

    public function index() { 
     $this->render('register'); 
     $this->set('genres', $this->Genre->find('all')); 
     $this->set('themes', $this->Theme->find('all')); 
    } 

}