Я новичок в cakephp, но из того, что я понимаю, все взаимодействие с базой данных должно происходить в модели.значения полей редактирования cakephp
Я следил за официальным учебным блогом cakephp, но они используют контроллер для сохранения, редактирования и удаления сообщений вместо модели. http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html
Я пытаюсь разделить программу, чтобы модель заботилась обо всех взаимодействиях с БД. Я смог получить его, чтобы сохранить новые записи, однако я не могу понять, как их редактировать.
Это оригинальное действие, используемое официальным учебным пособием для редактирования постов.
public function edit($id = null) {
$this->Post->id = $id;
if ($this->request->is('get')) {
$this->request->data = $this->Post->read();
} else {
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash('Your post has been updated.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to update your post.');
}
}
}
Итак, вот мое действие контроллера. Мое имя контроллера - ConcatenatesController, а моя модель - Concatenate. Я изначально использовал это, чтобы проверить конкатенацию строк.
public function edit($id = null) {
$this->Concatenate->id = $id;
$this->Concatenate->editPost($id);
}
... и модель, которая идет с ним
function editPost($id){
if ($this->save($this->request->data)) {
$this->Session->setFlash('Your post has been updated.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to update your post.');
}
}
Я получаю следующие ошибки
Notice (8): Trying to get property of non-object [APP/Model/Concatenate.php, line 20]
Fatal error: Call to a member function setFlash() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/cake/app/Model/Concatenate.php on line 24
Линия 20 относится к
if ($this->save($this->request->data)) {
и Строка 24 -
$this->Session->setFlash('Unable to update your post.');
Это не правильный путь делать это; учебник документирует то, как вы должны это делать. – sevenseacat
Значит, вы говорите мне, что я должен использовать контроллер для взаимодействия с базой данных? – user1104854
Контроллер не взаимодействует с базой данных. '$ this-> Post-> save ($ this-> request-> data)' он инструктирует модель сделать это. – sevenseacat