J'utilise CakePHP 2.6.7 et copié le code pour montrer les messages flash d'un contrôleur à un autre, mais cela ne fonctionne pas dans le second contrôleur.Session-> flash ne montre pas le message de session dans CakePHP
En AdminsController:
function login() {
$this->loadModel('Admin');
$this->layout = "admin-login";
// if already logged in check this step
if ($this->Auth->loggedIn()) {
return $this->redirect('dashboard'); //(array('action' => 'deshboard'));
}
// after submit login form check this step
if ($this->request->is('post')) {
if ($this->Auth->login()) {
// pr($this->Auth); exit;
if ($this->Auth->user('status') == 'active') {
// user is activated
$this->Admin->id = $this->Auth->user('id');
$this->Admin->saveField("loggedIn", 1);
return $this->redirect($this->Auth->redirectUrl());
} else {
// user is not activated
// log the user out
$msg = '<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>You are blocked, Contact with Adminstrator</strong>
</div>';
$this->Session->setFlash($msg);
return $this->redirect($this->Auth->logout());
}
} else {
$msg = '<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Incorrect email/password combination. Try Again</strong>
</div>';
$this->Session->setFlash($msg);
}
}
}
Dans les admins/login.ctp:
<?php echo $this->Session->flash(); ?>
Quand je mauvais type e-mail ou mot de passe, il affiche le message d'erreur. preuve: http://jegeachi.com/admins/login
Mais la tâche SAME ne peut pas être effectuée dans ResellersController. Voici le code du contrôleur:
function login() {
$this->layout = 'public-login';
$this->loadModel('Reseller');
// if already logged in check this step
if ($this->Auth->loggedIn()) {
return $this->redirect('profile'); //(array('action' => 'deshboard'));
}
// after submit login form check this step
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
} else {
$msg = '<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Incorrect email/password combination. Try Again</strong>
</div>';
$this->Session->setFlash($msg);
}
}
}
dans Revendeurs/login.ctp:
<?php echo $this->Session->flash(); ?>
Lorsque la connexion a échoué en raison d'une mauvaise e-mail ou mot de passe, il n'est pas montré.
preuve: http://jegeachi.com/resellers/login
Son problème étrange et câblé. Le même code fonctionne dans un contrôleur mais pas dans un autre. Une idée?
J'utilise CakePHP 2.6.7 et la charge session dans les deux admins contrôleur et revendeurs contrôleur –