2014-12-17 3 views
1

Я создал метод в моей модели, который успешно отображает правильные данные, когда I pr ($ variable) на экран. Однако без печати я получаю сообщение «Уведомление (8): Неопределенная переменная».cakephp fat model все еще неопределенная переменная в действии вида

Модель в вопросе «промышленность» имеет много «новостей и событий».

То, что я пытаюсь сделать в представлении для конкретной отрасли, это показ новостей, которые состоят из двух разных условий. Одним из новостей является 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 \ просмотр .ctp, строка 12]

Предупреждение (2): Недействительный аргумент для Еогеаспа() [APP \ Вид \ Промышленность \ view.ctp, строка 12]

Я подозреваю, что это что-то маленькое, с видом.

Спасибо, Paul

ответ

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')); 
+0

благодаря Нику. Я подозревал, что это связано с тем, как «набор» и переменные работают, но не нашли ответа. – Paul

+0

спасибо Нику. Я подозревал, что это связано с тем, как работают «набор» и переменные. После внесения изменений я не вижу никаких результатов. Но когда я отлаживаю каждую переменную, возвращаются правильные данные. Я думаю, что это связано с маршрутизацией. Для каждой отрасли я добавил маршрут следующим образом: Router :: connect ('/ industryName1', array \t \t ('controller' => 'industries', 'action' => 'view', 1)); Поскольку на этом сайте будет только четыре отрасли, я хотел бы, чтобы их имена/слизни были в ссылке на каждое представление. Я не уверен, что лучший способ сделать это и обеспечить, чтобы каждая переменная в представлении заполнялась данными. – Paul

+0

Вы подтвердили правильность работы маршрутизации? Я имею в виду, вы попадаете в правильную функцию с правильными переменными данными? И после этого он отображает правильный файл вида? –

Смежные вопросы