cakephp 3中的Flash消息不起作用

cakephp 3中的Flash消息不起作用,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我是蛋糕新手,如果这是一个简单的问题,很抱歉 当我完成保存数据并尝试显示一条消息,其中包含有关用户是否已保存或无法保存的信息时,请显示下一个错误: 错误:对非对象调用成员函数时出错 文件C:\wamp\www\proyecto\src\Controller\AdministradorsController.php 电话号码:76 AdministratorsController扩展了AppController 数据正在插入数据库,但Flash消息给了我一个错误,很抱歉我的英语和thx不好。如果您

我是蛋糕新手,如果这是一个简单的问题,很抱歉

当我完成保存数据并尝试显示一条消息,其中包含有关用户是否已保存或无法保存的信息时,请显示下一个错误:

错误:对非对象调用成员函数时出错 文件C:\wamp\www\proyecto\src\Controller\AdministradorsController.php 电话号码:76

AdministratorsController扩展了AppController


数据正在插入数据库,但Flash消息给了我一个错误,很抱歉我的英语和thx不好。如果您正在AppController中加载Flash组件,问题可能是您的AdministratorsController中有方法initialize,而您没有调用parent::initialize;用那种方法。它必须工作,以便在AppController初始化方法中初始化的所有帮助程序、组件等都被转移。

如果您正在AppController中加载Flash组件,问题可能是您在AdministratorController中有方法初始化,而您没有调用parent::initialize;用那种方法。它必须工作,以便在AppController初始化方法中初始化的所有帮助程序、组件等都被转移。

要轻松处理Flash消息,可以使用简单的通知插件。

要轻松处理Flash消息,可以使用简单的通知插件

在控制器中:

将同一类应用于src/Template/Element/Flash/error.ctp

在控制器中:

将同一类应用于src/Template/Element/Flash/error.ctp


您似乎没有加载Flash组件。在AppController.php的initialize方法中,输入$this->loadComponent'Flash';再次感谢您,Andre,但是在'AppController.php'中,我有'loadComponent'Flash,但我在AdministratorsController中的'initialize'方法中再次使用'loadComponent'Flash,这次使用Flash消息。我不知道我为此做了什么。Edgar,在另一个控制器中再次加载Flash组件应该不会有问题。是否扩展AppController:类AdministratorsController扩展AppController。另一个可能导致问题的问题是,如果您在AdministratorController中定义initialize,但没有调用parent::initialize。是的,就是这样,我没有调用parent::initialize,谢谢。您似乎没有加载Flash组件。在AppController.php的initialize方法中,输入$this->loadComponent'Flash';再次感谢您,Andre,但是在'AppController.php'中,我有'loadComponent'Flash,但我在AdministratorsController中的'initialize'方法中再次使用'loadComponent'Flash,这次使用Flash消息。我不知道我为此做了什么。Edgar,在另一个控制器中再次加载Flash组件应该不会有问题。是否扩展AppController:类AdministratorsController扩展AppController。另一个可能导致问题的问题是,如果您在AdministratorController中定义initialize,但没有调用parent::initialize。是的,就是这样,我没有调用parent::initialize,谢谢。
public function add()
{
    $administrador = $this->Administradors->newEntity();
    if ($this->request->is('post')) {

        $this->loadModel('Personas');
        $persona = $this->Personas->newEntity();
        $persona->rut = $this->request->data['Personas']['rut'];
        $persona->sexo = $this->request->data['Personas']['sexo'];
        $persona->nombre = $this->request->data['Personas']['nombre'];
        $persona->apellido_paterno = $this->request->data['Personas']['apellido_paterno'];
        $persona->apellido_materno = $this->request->data['Personas']['apellido_materno'];
        $persona->direccion = $this->request->data['Personas']['direccion'];
        $persona->telefono_fijo = $this->request->data['Personas']['telefono_fijo'];
        $persona->telefono_movil = $this->request->data['Personas']['telefono_movil'];
        $persona->fecha_nacimiento = $this->request->data['Personas']['fecha_nacimiento'];
        $persona->email = $this->request->data['Personas']['email'];
        $persona->comuna_id = $this->request->data['Personas']['comuna_id'];

        if(!$this->Personas->save($persona)){

             $this->Flash->error('The administrador could not be saved. Please, try again.');
        }



        $administrador = $this->Administradors->newEntity();

        $administrador->persona_id = $persona->id;

        if(!$this->Administradors->save($administrador)){

              $this->Flash->error('The administrador could not be saved. Please, try again.');
        }

        $this->loadModel('Users');
        $user = $this->Users->newEntity();
        $user->username = $persona->email;
        $user->password = $this->rand_passwd(6);
        $user->estado = true;
        $user->persona_id = $persona->id;
        $user->role_id = ADMIN;

        if($this->Users->save($user)){

             $this->Flash->success('The administrador has been saved.');

             return $this->redirect(['action' => 'index']);

        }else{
             $this->Flash->error('The administrador could not be saved. Please, try again.');
        }

    }
    $personas = $this->Administradors->Personas->find('list', ['limit' => 200]);
    $this->set(compact('administrador', 'personas'));
    $this->set('_serialize', ['administrador']);

    $this->loadModel('Regions');
    $comunas = $this->Regions->Comunas->find('list', ['limit' => 200]);
    $this->set(compact('comuna', 'comunas'));
    $this->set('_serialize', ['comuna']);
}
<?php
    $this->Flash->error(__('Your error message'), ['key' => 'error']);
?>
<?= $this->Flash->render('error'); ?>
<?php
    if (!isset($params['escape']) || $params['escape'] !== false) {
        $message = h($message);
    }
?>
<div class="alert alert-success" onclick="this.classList.add('hidden')"><?= $message ?></div>