【发布时间】:2016-02-22 10:50:10
【问题描述】:
我是 CakePHP 的新手,我目前正在尝试获取表“流派”和“主题”中的所有行以填充一些多个复选框,但是当我尝试 foreach 时,我总是收到以下错误:
注意(8):未定义变量:genres [APP/View/Pages/register.ctp, line 88]
警告 (2):为 foreach() 提供的参数无效 [APP/View/Pages/register.ctp,第 88 行]
注意(8):未定义变量:主题[APP/View/Pages/register.ctp,第98行]
警告 (2):为 foreach() 提供的参数无效 [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>
流派控制器:
App::uses('AppController', 'Controller');
/**
* CakePHP GenresController
* @author Sen
*/
class GenresController extends AppController {
public function index() {
$this->set('genres', $this->Genre->find('all'));
}
}
主题控制器:
App::uses('AppController', 'Controller');
/**
* CakePHP ThemesController
* @author Sen
*/
class ThemesController extends AppController {
public function index($id) {
$this->set('themes', $this->Theme->find('all'));
}
}
我试图像这样将一个数组设置为 $genres,但它说我的 GenresController 的索引没有定义:
$genres = array();
$genres[0]['libelle'] = "Lamb";
$genres[1]['libelle'] = "Ham";
提前感谢您的帮助。
【问题讨论】:
-
您已经为两个控制器定义了
index操作。但是在register,ctp中使用这些变量。您应该在您正在调用的控制器的register中获取所有这些。 -
您需要在您的 AppController
beforefilter()function 中添加$this->set('genres', $this->Genre->find('all')); $this->set('themes', $this->Theme->find('all'));。也在那里加载模型。来自两个控制器的remove index()代码并在任何控制器中创建register()。
标签: php arrays cakephp foreach controller