2015-12-04 5 views
3

Я использую CakePHP 2.6 и пытаюсь следовать вместе с простым руководством по аутентификации. Я использую другую модель Account для моих Auth->User. После добавления в Flash компоненте в моем AppController - я вижу сообщение об ошибке на все мои страницах:CakePHP: FlashComponent не найден

Error: FlashComponent could not be found. 

Error: Create the class FlashComponent below in file: app\Controller\Component\FlashComponent.php 

<?php 
class FlashComponent extends Component { 

} 

Теперь я знаю, что я в настоящее время не имею файл FlashComponent.php в app\Controller\Component, я должен на самом деле добавить его там? Я ничего не вижу в учебнике.

Спасибо!

AppController

public $components = array(
    'Flash', 
    'Auth' => array(
     'loginRedirect' => array(
      'controller' => 'accounts', 
      'action' => 'index' 
     ), 
     'loginAction' => array(
      'controller' => 'accounts', 
      'action' => 'login' 
     ), 
     'logoutRedirect' => array(
      'controller' => 'accounts', 
      'action' => 'login', 
     ), 
     'authenticate' => array('Form' => array(
        'userModel' => 'Account', 
        'passwordHasher' => 'Blowfish', 
        'fields' => array(
             'username' => 'email', 
             'password' => 'token', 
             ) 
        ) 
     ) 
    ) 
); 

public function beforeFilter() { 
    $this->Auth->allow('index', 'view'); 
} 

Login.ctp

<?php echo $this->Flash->render('auth'); ?> 
<?php echo $this->Form->create('Account', array('action' => 'login')); ?> 
<?php echo $this->Form->input('email', array('class' => 'form-control', 'type' => 'email', 'placeholder' => 'Email', 'label' => false)); ?>  
<?php echo $this->Form->input('token', array('class' => 'form-control', 'type' => 'password', 'placeholder' => 'Password', 'label' => false)); ?> 
<?php echo $this->Form->submit('Sign In', array('class' => 'btn btn-primary btn-block btn-flat')); ?> 
<?php echo $this->Form->end(); ?> 

ответ

7

FlashComponent был добавлен в CakePHP в v2.7. Для предыдущих версий вам необходимо использовать SessionComponent и использовать $this->Session->flash() в вашем контроллере для установки флэш-сообщений.

+0

Wow ... достаточно простой. Я только что обновил до 2.7 (используя 2.6 через Bitnami). Спасибо вам! – user2836292

+0

Мне не удалось обновить, поэтому мне пришлось использовать «SessionComponent», и я могу объяснить это немного дальше, если кому-то еще нужны образцы устаревших кодов. Убедитесь, что в вашем массиве '$ helpers' есть' 'Session '' в вашем контроллере, и установите флэш-сообщения через '$ this-> Session-> setFlash (здесь сообщение');'. По вашему мнению, сделайте их через 'echo $ this-> Session-> flash();' (отсюда необходимость [Session Helper] (http://book.cakephp.org/2.0/en/core-libraries/ helpers/session.html # display-notifications-or-flash-messages) в вашем контроллере). – Sam

Смежные вопросы