cakephp fat model在视图动作中仍然是未定义的变量

时间:2014-12-17 15:23:37

标签: variables cakephp undefined

我在我的模型中创建了一个方法,当我将pr($ variable)显示到屏幕时,该方法成功显示了正确的数据。但是没有打印,我收到'Notice(8):Undefined variable'消息。

有问题的模型'行业'有很多'新闻和事件'。

我在特定行业的视图中尝试做的是显示两种不同条件的新闻。一种类型的新闻是news.type = highlight(仅显示一个精彩故事),第二个是活动故事列表。

这是我模型中的方法。

    // industry highlight news
public function getHighlightNews() {
    $newsHeadline = $this->News->find('first', array(
        'conditions' => array('News.type' => 'highlight','News.active' => 'yes'),
        'limit' => 1,
        'recursive' => 0,
        'fields' => array(
            'News.slug', 
            'News.title', 
            'News.date', 
            'News.imgPathThumb',
            'News.alt_tag',
            'News.id',
            'News.caption',
            'News.body'
            ),
        ));

     return $newsHeadline;
    }


    public function getNewsList() {
    $newslist = $this->News->find('all', array(
        'conditions' => array('News.active = "Yes"','News.industry_id = 1'),
        'limit' => 4,
        'recursive' => 0,
        'fields' => array(
            'News.slug', 
            'News.title', 
            'News.date', 
            'News.industry_id', 
            'News.imgPathThumb',
            'News.alt_tag',
            'News.id',
            'News.caption',
            'News.body'
            ),
        ));

     return $newslist;
    }

这就是我的行业控制人员。我为新闻列表和事件列表创建了类似的模型方法。

    public function view($id = null) {
    $this->layout='default';    
    $this->Industry->id = $id;
    if (!$this->Industry->exists()) {
        throw new NotFoundException(__('Invalid industry'));
    }               

    $eventlist = $this->Industry->getEventsList($id);   
    $newslist = $this->Industry->getNewsList($id);  
    $highlights = $this->Industry->getHighlightNews($id);

    //pr($newslist); die;   
    $this->set('eventlist', $eventlist, 'newslist', $newslist, 'highlights', $highlights);
}

这是我的观点:

<div class="first articles">
 <?php  foreach ($highlights as $highlight): ?>
   <h1><?php echo $highlight['Industry']['title']; ?></h1>
   <p><?php echo $highlight['Industry']['body']; ?>
  <?php endforeach; ?>
 </p>
</div><!-- /articles -->

我在视图中收到的消息是:

注意(8):未定义的变量:高亮显示[APP \ View \ Industries \ view.ctp,第12行]

警告(2):为foreach()[APP \ View \ Industries \ view.ctp,第12行]提供的参数无效

我怀疑这是我忽略的小事。

谢谢,保罗

1 个答案:

答案 0 :(得分:2)

设置变量不起作用。你需要改变这个:

$this->set('eventlist', $eventlist, 'newslist', $newslist, 'highlights', $highlights);

对此:

$this->set('eventlist', $eventlist);
$this->set('newslist', $newslist); 
$this->set('highlights', $highlights);

或者这个:

$this->set(compact('eventlist','newslist','highlights'));