2016-02-22 2 views
-2

Я новичок в CakePHP, и в настоящее время я пытаюсь получить все строки в таблице «жанры» и «темы», чтобы заполнить несколько флажков, но когда я пытаюсь использовать foreach, я всегда получить ошибки ниже:CakePHP Foreach не работает

Примечание (8): Не определено переменные: жанры [APP/View/Pages/register.ctp, строка 88]

Предупреждение (2): Недействительный аргумент для Еогеаспа() [APP/View/Pages/register.ctp, строка 88]

Уведомление (8): Неопределенная переменная: темы [APP/View/Pages/register.ctp, строка 98]

Предупреждение (2): Недействительный аргумент для Еогеаспа() [APP/View/Pages/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() '. Загрузите модель там тоже. 'remove 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')); 
    } 

}