【问题标题】:cakephp undefined index when definitely defined明确定义时 cakephp 未定义索引
【发布时间】:2012-08-25 04:21:22
【问题描述】:

如需参考,请访问this page here。尝试在一个特定模型上显示视图时,我收到未定义的索引错误。具体来说,来自我的优惠券模型的任何数据。这是我的控制器代码:

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);

当我在我的视图中调试($seafood) 时,Coupon 的所有数据都会显示,所以我知道它正确地提取数据并将其与我的餐厅模型相关联。但是,当我使用我的 $seafood 数组创建一个 foreach 循环时,除了与优惠券相关的任何内容的未定义索引错误外,我什么也得不到。奇怪的是,我还让我的控制器从 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.....

我尝试从数组中删除可包含的行为,但结果是相同的。我应该指出,当调试数组打印时,它按顺序排列:餐厅、用户、优惠券。蛋糕是否因为它是第 3 个而丢失了 Coupon 数组?还是我的视图代码很乱?

【问题讨论】:

    标签: cakephp-2.0 cakephp-model


    【解决方案1】:

    看起来像 Restaurant hasMany Coupon 所以 Coupon 是一个索引数组。你需要一个嵌套的 for 循环。

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

    【讨论】:

    • 就是这样,谢谢!现在我实际上对 cakephp 和一般编程有了更多的了解。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 2015-01-14
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2015-11-11
    相关资源
    最近更新 更多