供参考,请访问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)时,优惠券的所有数据都会显示,所以我知道它正确地提取数据并将其与我的餐厅模型相关联。但是,当我使用我的$ seafood数组创建一个foreach循环时,除了与优惠券相关的任何内容之外,我什么也得到了未定义的索引错误。奇怪的是,我还有我的控制器从用户模型拉出来,我在视图中从该模型调用的任何内容都会被渲染。这是我的观看代码:
<?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: <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?或者我的观看代码只是搞砸了?
答案 0 :(得分:1)
看起来像餐厅有很多优惠券,所以优惠券是一个索引数组。你需要一个嵌套的for循环。
foreach ($seafood as $res) {
//irrelevant
foreach ($res['Coupon'] as $coupon) {
if($coupon['description'] !=''){
//do stuff
}
}
}