在CakePHP中调用boolean上的成员函数success()

Mar*_*een 5 php cakephp

我遇到了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(__('用户已保存.'));

从数据库中插入,更新或删除用户(取决于请求的操作)

令我困惑的是,为什么代码会返回错误,最重要的是,我怎么能解决这个问题呢?

非常感谢您的宝贵时间.

Mar*_*een 8

似乎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组件并删除错误,如初始帖子中所述.