2017-10-25 2 views
0

ユーザーまたはパスが間違っていると、デフォルトでフラッシュエラーメッセージを表示します。ログイン時にCakePHP 3エラーメッセージが表示されない

これは私がUserControllerで私のコードです:間違っていくつかのフィールドを置く

class UsersController extends AppController 
{ 
    public function login() 
    { 
     if($this->request->is('post')) 
     { 
      $user = $this->Auth->identify(); 
      if($user) 
      {    
       $this->Auth->setUser($user); 
       return $this->redirect($this->Auth->redirectUrl()); 
      } 
      else{ 
       $this->Flash->error(__('user/password incorrect')); 
      } 
     } 
    } 
    ... 
} 

後、フラッシュメッセージは表示されません。しかし、その後、ユーザーとパスワードを正しく入力すると、コントローラが私をリダイレクトしたときに、次のビューにフラッシュエラーメッセージが表示されます。

また、フラッシュカードはプロジェクトのどの部分でも完全に機能します。ログインしても表示されないときだけです。

これはあなたのログインビュー

に何のレイアウトを使用していないが、フラッシュメッセージを出力コードはどこdefaultレイアウトに通常

<?php 

use Cake\Cache\Cache; 
use Cake\Core\Configure; 
use Cake\Datasource\ConnectionManager; 
use Cake\Error\Debugger; 
use Cake\Network\Exception\NotFoundException; 

$this->layout = false; 


$cakeDescription = 'Welcome'; 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <?= $this->Html->charset() ?> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title> 
     <?= $cakeDescription ?> 
    </title> 
    <?= $this->Html->meta('icon') ?> 
    <?= $this->Html->css('base.css') ?> 
    <?= $this->Html->css('cake.css') ?> 

</head> 
<body class="home"> 
<br> 
<br> 
<div class="index large-4 medium-4 large-offset-4 medium-offset-4 columns"> 
    <div class="panel"> 
     <h2 class="text-center">Login</h2> 
     <?= $this->Form->create(); ?> 
      <?= $this->Form->input('email', array('label' => 'write your email')); ?> 
      <?= $this->Form->input('password', array('label' => 'write your password')); ?> 
      <?= $this->Form->button('Login', ['type' => 'submit']); ?> 
     <?= $this->Form->end(); ?> 
    </div> 
</div> 
</body> 
</html> 

おかげ

答えて

1

をそのレイアウトを使用し、あなたのlogin.ctpにコード行を置きますFlashヘルパーの()メソッドを使用して、Flashの成功/エラーメッセージを表示します。

次のいずれかのレイアウトファイルに次の行を置く:

<?= $this->Flash->render() ?> 

それとも

を使用すると、特定のCTPファイルで呼び出すことができます。

0

私login.ctpです

<?= $this->Flash->render('auth') ?> 

だから、あなたはc 2件の観光名所:

  1. は、そのコードが含まれているログインレイアウトを作成し、レンダリングコールする必要があり、あなたのビューで
+0

と一緒に作業してください。Flash-> render()?> –

関連する問題