Я использую 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(); ?>
Wow ... достаточно простой. Я только что обновил до 2.7 (используя 2.6 через Bitnami). Спасибо вам! – user2836292
Мне не удалось обновить, поэтому мне пришлось использовать «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