Вставьте / сохраните записи поиска / формы клиента в отдельную таблицу до запуска кода - CakePHP - PullRequest
1 голос
/ 25 ноября 2010

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

Я попытался сделать:

$ this-> Search-> create ();

$ this-> Search-> save ($ this-> data);

Но я не думаю, что мне понравилась модель, котораяне принадлежит этому контроллеру (я думаю, что это не следует соглашению и полностью использует CakePHP).

Другая идея, которую я имел, состояла в том, чтобы создать новый search_controller, а затем запустить $ this-> data через вышекод и перенаправить обратно на контроллер Trips, но кажется, что это не оптимальный способ сделать это.

Есть мысли о том, как лучше всего это сделать?

В процедурном PHP я бы просто сделал запрос INSERT раньше.

Спасибо за помощь!

1 Ответ

1 голос
/ 25 ноября 2010

Я думаю, что иметь модель, которая не принадлежит конкретному контроллеру, не так уж и плохо.

На самом деле вы можете поместить эту логику в beforeFilter () модели Trips следующим образом:

class Trip extends AppModel {
   //....
   function beforeFind(){
      if($this->data){
         $search = ClassRegistry::init('Search'); //adding instance of Search model
         $search->save($this->data); //save the data
         //Do extra things if needed
      }
   }
   //....
}

Таким образом, у вас нет «чужой» модели в ваших контроллерах, и вы используете рекомендацию «Жирные модели, Тощие контроллеры»:)

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