2012-02-08 105 views
0

我有2個控制器:「CouponsController」和「CategoriesController」。下面是每個型號:CakePHP:控制器/關係

class Category extends AppModel { 
    public $hasMany = array('Coupon' => array('className' => 'Coupon', 
               'foreignKey' => 'category_id') 
    ); 
} 


class Coupon extends AppModel { 
    public $belongsTo = array('Category' => array('className' => 'Category', 
                'foreignKey' => 'category_id') 
    ); 
} 

我想創建鏈接查看每個類別的優惠券。我最終想出了爲CouponsController(本例中是餐館)以下:

public function restaurants() { 
    $this->set('coupons', $this->Coupon->findAllBycategory_id('1')); 
    $this->render("index"); 
} 

我有2個問題:

1:有沒有更好的方式來顯示所有的帖子從每個類別(現在,我只是複製上面的「酒店」功能和更改類別ID,我使它每次都呈現相同的視圖)。

2:有沒有更好的方式來訪問給定類別的優惠券(更多OOP:即:優惠券 - >類別等)比我做的方式?

回答

1

我會允許餐館()採取類別變量。如果沒有設置,則顯示所有類別的所有優惠券。如果設置了類別,則按照您的ID進行搜索。然後,我會有鏈接遍歷鏈接返回到輸入變量的同一頁面的鏈接。

控制器

public function restaurants(category_id = null) { 
    $this->set('categories', $this->Category->find('all'); 
    if(isset($category_id)) { 
    $this->set('coupons', $this->Coupon->findAllBycategory_id($category_id)); 
    } else { 
    $this->set('coupons', $this->Coupon->find('all')); 
    } 
    $this->render("index"); 
} 

查看

//Some menu somewhere 
<ul> 
<?php foreach($categories as $category): ?> 
    <li><?php $this->Html->link($category['Category']['name'], ('action'=>'restaurants', $category['Category']['id']) ?> </li> 
<?php endforeach; ?> 
</ul> 

東西沿着這些路線。