Я использую CakePHP 3.6 и хочу разрешить пользователю входить в систему из разных представлений. У меня есть 2 одинаковые формы, но одна на каждой странице, а другая только на 1 странице.
Позвольте мне показать вам, что:
Вот моя функция инициализации AppControler
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler', [
'enableBeforeRedirect' => false,
]);
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authorize'=> 'Controller',
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
]
]
],
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
],
// If unauthorized, return them to page they were just on
'unauthorizedRedirect' => $this->referer()
]);
}
Вот моя функция входа в UsersController:
public function login()
{
if($this->request->is('post')) {
$user = $this->Auth->identify();
if($user) {
$this->Auth->setUser($user);
$this->Flash->success('You logged succesfully!');
return $this->redirect($this->referer());
}
// Invalid login
$this->Flash->error('Incorrect login');
}
}
Вот форма (помните, что они одинаковы):
<?php if(!$loggedIn): ?>
<?= $this->Form->create(null, ['class' => 'form-signin']) ?>
<h2 class="form-signin-heading">Login</h2>
<?= $this->Form->input('email', ['required' => true, 'class' => 'form-control', 'placeholder' => 'Email', 'label' => false]) ?>
<?= $this->Form->input('password', ['type' => 'password', 'required' => true, 'class' => 'form-control', 'placeholder' => 'Contraseña', 'label' => false]) ?>
<?= $this->Form->input('remember', ['type' => 'checkbox', 'value' => 'remember-me']) ?>
<?= $this->Form->submit('Entrar', ['class' => 'btn btn-lg btn-primary btn-block' ]); ?>
<?= $this->Form->end() ?>
<?php endif; ?>
Проблема кажется мне достаточно очевидной, но я не знаю, как ее решить. Форма, которая есть во всех представлениях, не работает, а только в представлении «Пользователи». Похоже, что действие входа в систему работает, только если я нахожусь в представлении Пользователи ...
Спасибо!