CakePHP неопределенный индекс, когда определено - PullRequest
0 голосов
/ 23 января 2012

Для справки, пожалуйста, посетите эту страницу здесь . При попытке отобразить представление для одной конкретной модели я получаю неопределенную ошибку индекса. Конкретно любые данные из моей купонной модели. Вот мой код контроллера:

public function seafood() {

$this->paginate['Restaurant']=array(
        'limit'=>9,
        'order' => 'RAND()',
        'contain'=>array(
                'User'=>array(
                    'id', 'user_name'),

                'Coupon'=>array(
                    'id','description','expires','end_date','promo_code','restaurant_id')
                    ),
        'conditions'=>array(

                'Restaurant.active'=>1,
                'Restaurant.seafood'=>'Seafood'
                )   
    );
$data = $this->paginate('Restaurant');
$this->set('seafood', $data);

когда я отлаживаю ($ морепродукты), на мой взгляд, все данные для Coupon показывают, поэтому я знаю, что они правильно извлекают данные и связывают их с моей моделью Restaurant. Однако, когда я создаю цикл foreach с моим массивом $ seafood, я получаю только неопределенные ошибки индексации для всего, что связано с купоном. Что странно, так это то, что у меня также есть контроллер, извлекаемый из модели User, и все, что я вызываю из этой модели в представлении, визуализируется. Вот мой код просмотра:

 <?php foreach ($seafood as $res) { ?>
        .....irrelevant code.....
 <p><?php if($res['Coupon']['description'] !=''){
        echo $this->Text->truncate($res['Coupon']['description'], 200, array('ending'=>'...', 'exact'=>false) );
        }
        else echo 'Sorry, a description of this restaurant\'s promotion is not available.  <br><br><br>';
         ?><a href="<?php echo $res['Restaurant']['website']; ?>"><em> (read more -->)</em></a></p>
    <br />
    <div>
    <a href="<?php echo $res['Restaurant']['website']; ?>" id="specials"><span style="margin-left:36px;">Promo Code:&nbsp;&nbsp;<span style="font-style:bold; color:#FF0000;"><?php echo $res['User']['user_name']; ?></span></span></a>
    <a href=" " id="print"><span style="margin-left:24px;">Print</span></a>
<?php } ?>
   ......more irrelevant code.....

Я попытался удалить поведение, содержащееся в массиве, но результаты те же. Я должен отметить, что когда печатается отладочный массив, он идет по порядку: Ресторан, Пользователь, Купон. Торт как-то теряет массив Coupon, потому что он третий? Или мой код вида просто винт?

1 Ответ

1 голос
/ 23 января 2012

Похоже, что в ресторане есть много купонов, поэтому купон является индексированным массивом.Вам понадобится вложенный цикл.

foreach ($seafood as $res) {
    //irrelevant
    foreach ($res['Coupon'] as $coupon) {
        if($coupon['description'] !=''){
            //do stuff
        }
    }
}
...