2012-02-03 3 views
0

내 쿠폰 카테고리 중 .... 쿠폰에 사용하고자하는 print_coupon.ctp 파일이 있습니다 .... 레스토랑, 나이트 클럽, 골프 코스 등 (모두 자신의 모델이 있습니다). ,Cakephp에서보기에서 사용되는 모델 중 하나의 이름을 검색하는 방법은 무엇입니까?

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를 레스토랑, 골프 코스, 나이트 클럽, 사용자로 사다리를 볼 수 있습니다 : 내 컨트롤러에서 나는이 논리가 난 그냥 레스토랑, 좋은 작품

echo $h['Restaurant']['Location']['address']; 

같은 것을 말함으로써 내 데이터를 검색하는 것입니다.

echo $h['$someModel']['Location']['address']; 

확실히이 CakePHP는 가능하다 : 나는 쿠폰과 같이 관련된 것을 나를 모델이 무엇이든 밖으로 변경할 수있는 것 컨트롤러에서 변수를 얻을 수 있도록하고 싶습니다?

답변

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; 
?> 
+0

나에게 설명 할 수 있다고 생각하세요? 나는 cakephp를 처음 사용합니다. – huzzah

+0

몇 가지 추가 정보로 답변을 업데이트했습니다. – mensch

+0

루프가 Restaurant.Location.address (작동 함)를 반환 한 다음 Coupon.Location.address (존재하지 않음), User.Location.address (nope) 등을 반환하므로 루프가 작동하지 않아 불행하게도 작동하지 않습니다. 나는 나를위한 최선의 행동 방침이 내가 추구하는 모델과 직접적인 관계를 수립하는 것이라고 생각한다. 마찬가지로 Location hasMany 쿠폰, hasOne Image 쿠폰 등을 말하면 레스토랑의 img1 또는 GolfCourse의 위치 주소를 불러 오지 않고 쿠폰 모델을 사용할 수 있습니다. 이게 좋을 것 같니? – huzzah