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

时间:2016-10-02 13:40:20

标签: 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']);
}

第56行是$ this-> Flash->成功(__('用户已保存。'));

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

令我感到困惑的是,为什么代码会返回错误,最重要的是,我该如何解决?

非常感谢你的时间。

1 个答案:

答案 0 :(得分:8)

似乎Flash组件未加载到父类AppController中。因此,您需要手动将其添加到AppController或自定义控制器类,在我的例子中是UsersController。

如果您想将其添加到父类AppController,请打开AppController文件,并在类的旁边添加以下PHP代码段。

public function initialize()
{
    $this->loadComponent('Flash');
}

如果您只想在自定义类中加载Flash组件,请在自定义类中添加以下代码段。

public function initialize()
{
    parent::initialize();
    $this->loadComponent('Flash');
}

这将使您可以使用Flash组件并删除错误,如初始帖子中所述。