у меня есть какая-то контроллер логика:CakePHP один вид для многих типов результатов
public function seafood() {
$this->set('title', 'Seafood restaurants in and near Gulf Shores, AL');
$this->paginate['Restaurant']=array(
'limit'=>9,
'order' => 'RAND()',
'conditions'=>array(
'Restaurant.active'=>1,
'Restaurant.seafood'=>'Seafood'
)
);
$data = $this->paginate('Restaurant');
$this->set('seafood', $data);
}
Это получает повторяется, как в 13 раз, с 13 различных страниц зрения меченого «морепродукты, набережная, Стейкхаус» и т.д. Вид точно то же самое, все так же реально, за исключением того, что контроллер должен найти определенный ресторан. Может кто-нибудь, пожалуйста, объясните мне, как я могу просто создать один файл вида, который будет отображаться на сайте www.site.com/restaurants/seafood?
По правде говоря, все мои страницы результатов являются некоторыми вариациями. Я говорю торт, чтобы разбивать (и, как правило, содержать) данные какой-либо модели, а затем вставлять ее в представление, которое почти идентично (со значком или двумя различиями) ко всем другим страницам. Я создаю сайт, который является одним из тех, «что нужно делать и что можно увидеть в x beach town», поэтому у меня есть рестораны, места для проживания, покупки, ночные клубы, поля для гольфа и т. Д. (Это повсюду).
Мой босс дал мне этот гигантский веб-сайт для создания, и я действительно не очень хорошо разбираюсь в логике программирования. Я хотел бы придерживаться концепции DRY, чтобы я мог действительно изучить этот материал.
UPDATE
Хорошо, я уверен, мои маршруты были это в файле:
Router::connect('/restaurants/:action', array('controller'=>'restaurants'));
Я держал файл seafood.ctp, затем достаю функцию морепродукты() и застрял в этом в вместо:
public function restaurants($restaurantType) {
$this->set('title', $restaurantType.' restaurants in and near Gulf Shores, AL');
$this->paginate['Restaurant']=array(
'limit'=>9,
'order' => 'RAND()',
'conditions'=>array(
'Restaurant.active'=>1,
'Restaurant.seafood'=>$restaurantType
)
);
$data = $this->paginate('Restaurant');
$this->set($restaurantType, $data);
}
Когда я получил доступ к странице в www.site.com/restaurants/seafood торте сказал мне, что мой контроллер отсутствовал метод SEAF ООД(). Что я упустил?
Я думаю, вы перепутали ситуацию, пытаясь изменить маршрутизацию. 'Router :: connect ('/ restaurants /: action', array ('controller' => 'restaurants'));' Вы сказали, что принимать все, что приходит после ресторанов, как действие, когда на самом деле «рестораны» - это действие и что происходит после этого параметра, поэтому, естественно, теперь он говорит вам, что он не может найти имя функции 'seafood()' – Jeff
Я удалил правило router :: connect и все еще даю мне морепродукты(), отсутствующие в ошибка контроллера. – huzzah
Каково имя контроллера, на которое указывает ошибка, и имя вашего фактического контроллера? Я думаю, у вас просто проблемы с тем, как вы определяете свои URL-адреса. Это должно быть что-то вроде www.mysite.com/controllername/actionname/parameter. Это то, что ищет торт, когда он анализирует этот URL. – Jeff