我有2个控制器:“CouponsController”和“CategoriesController”。以下是每个模型:
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");
}
我有两个问题:
1:有没有更好的方法来显示每个类别的所有帖子(现在,我只是复制上面的“酒店”功能并更改类别ID。我每次都渲染相同的视图)。
2:是否有更好的方式来访问特定类别的优惠券(更多OOP:即:优惠券 - >类别等),而不是我的方式?
答案 0 :(得分:1)
我会允许restaurants()采用类别变量。如果未设置,则显示所有类别中的所有优惠券。如果设置了类别,则按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>
沿着这些方向发展。