首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cakephp中,如何检索视图中正在使用的模型之一的名称?

在Cakephp中,如何检索视图中正在使用的模型之一的名称?
EN

Stack Overflow用户
提问于 2012-02-03 09:35:44
回答 1查看 109关注 0票数 0

我有一个print_coupon.ctp文件,我想用于我的任何优惠券categories....restaurants,夜总会,高尔夫球场等(这些都有自己的模型)。在我的控制器中,我有这样的逻辑:

代码语言:javascript
复制
 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);
      }

这使我可以看到任何优惠券belongsTo餐厅,高尔夫球场,夜总会,用户等。通常在我的视图中打印餐厅优惠券,我会检索我的数据如下

代码语言:javascript
复制
echo $h['Restaurant']['Location']['address'];

这很好用,只适用于餐馆。我希望能够从控制器中获得一个变量,它可以让我更改优惠券所属的任何模型,如下所示:

代码语言:javascript
复制
echo $h['$someModel']['Location']['address'];

这在Cakephp中肯定是可能的吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-03 17:25:31

你需要相关的模型吗?它们在$this->params->models中以数组的形式提供。

编辑:

如果我理解正确的话,您想要echo一些相关模型的位置?$this->params->models包含一个相关模型的关联数组。CouponModel的关联模型数组可能如下所示:

代码语言:javascript
复制
Array
(
    [Restaurant] => Array
        (
            [plugin] => 
            [className] => Restaurant
        )

    [GolfCourse] => Array
        (
            [plugin] => 
            [className] => GolfCourse
        )

    [Nightclub] => Array
        (
            [plugin] => 
            [className] => Nightclub
        )

    [User] => Array
        (
            [plugin] => 
            [className] => User
        )

)

然后,您可以遍历此数组并获取每个模型的位置。为了清楚起见,我已经将模型和每个className存储在一个变量中。

代码语言:javascript
复制
<?php
  $associatedModels = $this->params->models;
  foreach ($associatedModels as $model) :
    $className = $model['className'];
    echo $h[$className]['Location']['address'];
  endforeach;
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9122601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档