Согласно руководству по книге cakephp, такие действия, как обновление базы данных, выполняются в контроллере путем проверки того, установлен ли $id в пути ulr, если выполняется сохранение. Во время этого действия cakephp нужен $this->id, который считывается из базы данных с помощью $this->Model->find();
Во время этого процесса в контроллере интенсивно используются данные $this->request->data. Стоит отметить, что у Модели нет доступа к $this->request->data.
Мой вопрос: есть ли у вас собственные стратегии для создания тонкого контроллера и толстой модели во время действий CRUD?
У меня есть один большой пользовательский контроллер для выполнения действий CRUD, но модели, необходимые для этих действий, тонкие.
На мой взгляд, эти действия, как показано ниже, копируются через контроллер, и я ищу способ написать больше кода в модели.
Вот пример метода контроллера, скопированного много раз в контроллере (по сути, во всех подобных действиях меняется только имя модели)
public function strona_edytuj($id = null)
{
$this->loadModel('Page');
//$this->render('strona/strona_edytuj');
if (!$id) {
$this->recursve = 0;
$data = $this->Page->find('all');
$this->set('data', $data);
$this->render('strona/strona_pokaz_wszystkie');
return false;
}
$post = $this->Page->findById($id);
if (!$post) {
throw new NotFoundException(__('Nie ma takiej strony !'));
}
if ($this->request->is(array('post', 'put'))) {
$this->Page->id = $id;
if ($this->Page->save($this->request->data)) {
$this->Session->setFlash(__('Strona została zaktualizowana.'));
$this->redirect(array('controller' => 'users', 'action' => 'strona_edytuj'));
}
$this->Session->setFlash(__('Wystąpił błąd. Spróbuj ponownie.'));
}
if (!$this->request->data) {
$this->request->data = $post;
}
}
Спасибо за предложения.