CakePHP: контроллеры / отношения - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть 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"); 
}

У меня есть 2 вопроса:

1: есть ли лучший способ отображениявсе посты из каждой категории (сейчас я просто копирую вышеупомянутую функцию для "отелей" и меняю идентификатор категории. Каждый раз она отображает один и тот же вид).

2: Есть лилучший способ получить доступ к купонам для данной категории (больше ООП: т.е. купон-> категория и т. д.), чем способ, которым я это делаю?

1 Ответ

1 голос
/ 18 февраля 2012

Я бы позволил restaurant () взять переменную категории.Если ни один не установлен, то он отображает все купоны во всех категориях.Если категория установлена, она ищет по идентификатору, как у вас.Тогда у меня будут ссылки, повторяющиеся по категориям со ссылками на ту же страницу с введенной переменной.

Контроллер :

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>

Что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...