我遇到了CakePHP 3.0的一个问题,这个问题对我来说没有意义,希望你能帮忙解决.我有一个名为users的表名,其控制器名称相同(UsersController).我可以毫无问题地查看表中的用户,但是当我插入,修改或删除用户时,我收到错误.
当我执行插入时,我收到错误消息:在第56行的布尔UsersController.php上调用成员函数success()
如果我查看控制器类,它看起来像
public function add()
{
$user = $this->Users->newEntity();
if ($this->request->is('post')) {
$user = $this->Users->patchEntity($user, $this->request->data);
if ($this->Users->save($user)) {
$this->Flash->success(__('The user has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('The user could not be saved. Please, try again.'));
}
}
$this->set(compact('user'));
$this->set('_serialize', ['user']);
}
Run Code Online (Sandbox Code Playgroud)
第56行是$ this-> Flash-> success(__('用户已保存.'));
从数据库中插入,更新或删除用户(取决于请求的操作)
令我困惑的是,为什么代码会返回错误,最重要的是,我怎么能解决这个问题呢?
非常感谢您的宝贵时间.
似乎Flash组件未加载到父类AppController中.因此,您需要手动将其添加到AppController或自定义控制器类,在我的例子中是UsersController.
如果要将其添加到父类AppController,请打开AppController文件,并在类的侧面添加以下PHP代码段.
public function initialize()
{
$this->loadComponent('Flash');
}
Run Code Online (Sandbox Code Playgroud)
如果您只想在自定义类中加载Flash组件,请在自定义类中添加以下代码段.
public function initialize()
{
parent::initialize();
$this->loadComponent('Flash');
}
Run Code Online (Sandbox Code Playgroud)
这将使您可以使用Flash组件并删除错误,如初始帖子中所述.