【问题标题】:CakePHP Foreach doesn't workCakePHP Foreach 不起作用
【发布时间】: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-&gt;set('genres', $this-&gt;Genre-&gt;find('all')); $this-&gt;set('themes', $this-&gt;Theme-&gt;find('all'));。也在那里加载模型。来自两个控制器的remove index() 代码并在任何控制器中创建register()

标签: php arrays cakephp foreach controller


【解决方案1】:
App::uses('AppController', 'Controller');

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

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

添加以上代码在页面控制器中注册动作,不要忘记使用模态

【讨论】:

    【解决方案2】:
    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'));
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 2016-05-23
      相关资源
      最近更新 更多