我有一个print_coupon.ctp文件,我想使用我的任何优惠券类别的优惠券......餐馆,夜总会,高尔夫球场等(这些都有他们自己的模型)。在我的控制器中,我有这样的逻辑:
public function print_all_coupons() {
$this->layout ='couponlayout';
$this->set('title', 'Print all coupons for Gulf Shores');
$this->Coupon->recursive=2;
$this->paginate['Coupon']=array(
'limit'=>9,
'order'=>array(
'id'=>'asc'
),
'conditions'=>array(
'OR'=>array(
'expires' =>0,
'Coupon.end_date >'=>date('Y-m-d')
))
);
$c=$this->paginate('Coupon');
$this->set('printcoupons', $c);
}
这让我可以看到梯子,因为任何优惠券属于餐厅,高尔夫球场,夜总会,用户等。通常在我看来打印说餐馆优惠券,我会通过说出像
echo $h['Restaurant']['Location']['address'];
对于餐馆而言效果很好。我希望能够从控制器中获取一个变量,让我可以更改优惠券所属的模型,如下所示:
echo $h['$someModel']['Location']['address'];
当然,这可以在Cakephp中实现吗?
答案 0 :(得分:1)
您需要相关型号吗?这些在$this->params->models
中以数组形式提供。
修改强>
如果我理解正确,您想echo
某些关联模型的位置? $this->params->models
包含相关模型的关联数组。 CouponModel的关联模型数组可能如下所示:
Array
(
[Restaurant] => Array
(
[plugin] =>
[className] => Restaurant
)
[GolfCourse] => Array
(
[plugin] =>
[className] => GolfCourse
)
[Nightclub] => Array
(
[plugin] =>
[className] => Nightclub
)
[User] => Array
(
[plugin] =>
[className] => User
)
)
然后,您可以遍历此数组并获取每个模型的位置。为清楚起见,我已将模型和每个className存储在一个变量中。
<?php
$associatedModels = $this->params->models;
foreach ($associatedModels as $model) :
$className = $model['className'];
echo $h[$className]['Location']['address'];
endforeach;
?>