在Cakephp中,如何检索视图中使用的某个模型的名称?

时间:2012-02-03 01:35:44

标签: cakephp-2.0 cakephp-appmodel

我有一个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中实现吗?

1 个答案:

答案 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;
?>