Я создаю страницу поиска, которая будет иметь много различных параметров поиска, по которым пользователь может щелкнуть, и которые передадут переменные в URL.
$this->Restaurant->recursive = 1;
$this->paginate = array(
'conditions' => array(
'City.name' => $this->params['url']['city'],
'Cuisine.name' => $this->params['url']['cuisine'],
),
);
$data = $this->paginate('Restaurant');
$this->set('data', $data);
Это прекрасно работает, если в URL есть? City = newyork & kitchen = pizza - но если нет, то это выдает ошибку * Если бы это был обычный PHP, я бы выстроил запрос в виде строки и добавил бы условия, только если переменные существовали ... и т. д. Но с Cake я не уверен, с чего начать или как лучше всего с этим справиться.
EDIT:
* Если я не передаю 'city' или 'kitchen' в качестве переменных URL, я получаю следующее:
<code><b>Notice</b> (8)</a>: Undefined index: city [<b>APP/controllers
/restaurants_controller.php</b>, line <b>18</b>
...
City.name' => $this->params['url']['city'],
</span></code></span>
RestaurantsController::search() - APP/controllers/restaurants_controller.php
, line 18
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - APP/webroot/index.php, line 83
Не было бы проблем, если бы у меня были только «город» и «кухня» - но если я планирую, чтобы еще 20 вариантов поиска передавались таким же образом, я бы хотел их пропустить или не по моему усмотрению вместо того, чтобы заставлять их ВСЕ в URL каждый раз.