2015-04-29 1 views
0

Я пишу приложение для веб-сайта в CakePHP, у меня есть требование иметь окно поиска на домашней странице (pages/home.ctp, PagesController), которая ищет контент со страницы моих событий (события/индекс .ctp, EventsController).CakePHP 2.5 Базовый поиск различного контроллера

Я хочу, чтобы поиск выглядел во всех полях таблицы событий, но имел только одно поле ввода.

Когда пользователь нажимает на поиск или попадает в него, они должны быть отправлены на страницу Events/Index.ctp, где все события перечислены.

  1. Возможно ли это? если бы я мог получить некоторые указатели?
  2. Если нет, то как я могу достичь чего-то подобного?

Благодаря Стив

+0

Похоже, вы недавно начали создавать это приложение. Почему бы не выбрать CakePHP 3? –

+0

@AndreSantiago Я не использовал CakePHP 3, поскольку у меня есть базовое приложение CakePHP со всей аутентификацией и т. Д., Уже встроенным в 2.5, плагин, который я использовал для аутентификации, еще не включен 3.0 –

ответ

1

Ваш фактический поиск должен быть сделан в модели, так как это слой, который используется для извлечения данных. Поэтому, если вы ищете события, вы поместите метод search() в свою модель событий.

Затем в ЛЮБОЙ контроллер вы можете получить доступ к этому методу search(). Какой контроллер вы делаете, зависит от любого количества вещей, которое вы только можете принять во внимание.

Если вы в контроллере События:

$this->Event->search($postData); 

Если вы находитесь в другом (но связанный) контроллере:

$this->User->Event->search($postData); 

Если вы находитесь в другом (не связанный) Контроллер:

$this->loadModel('Event'); 
$this->Event->search($postData); 

Основываясь на вашем описании, это звучит так, будто вы просто хотите сделать свое сообщение формы в Events Controller's index(), где вы можете проверить, был ли представлен поисковый запрос, а если есть, запустите поиск.