CakePHP 2.5 Basic Search другой контроллер

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

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

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

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

Спасибо Стив

1 ответ

Решение

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

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

Если вы находитесь в контроллере событий:

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

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

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

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

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

Исходя из вашего описания, звучит так, как будто вы просто хотите разместить свою форму на контроллере событий. index() метод, в котором можно проверить, был ли отправлен поисковый запрос, и, если он был, запустите поиск.

Другие вопросы по тегам