2016-05-16 4 views
0

login.ctpにリンクしているhome.ctpにボタンを作成すると、ログイン機能を使用できます。 しかし、ログイン入力がhome.ctpにある場合、私はそれを動作させることはできません。 UserControllerにある状態 ログイン機能:home.ctpでポップアップログインCakephp 3

public function beforeFilter(Event $event) 
{ 
    parent::beforeFilter($event); 
    // Allow users to register and logout. 
    // You should not add the "login" action to allow list. Doing so would 
    // cause problems with normal functioning of AuthComponent. 
    $this->Auth->allow(['add', 'logout', 'register']); 
} 

public function login() 
{ 
    if ($this->request->is('post')) { 
     $user = $this->Auth->identify(); 
     if ($user) { 
      $this->Auth->setUser($user); 
      return $this->redirect($this->Auth->redirectUrl()); 
     } 
     $this->Flash->error(__('Invalid username or password, try again')); 
    } 
    $this->render('Pages/home'); 
} 

、私はログインモーダル使用:

<!-- Login Modal --> 
<div class="modal fade" id="login-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
<div class="modal-dialog"> 
    <div class="modal-content">      
    <div class="modal-body"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
     <h4>Login or Register</h4> 
     <!-- form class="aa-login-form" action="" --> 
     <?= $this->Form->create(null, ['class' => 'aa-login-form']); ?> 
     <label for="">Email address<span>*</span></label> 
     <?= $this->Form->input('email', ['type' => 'text', 'placeholder' => 'Email', 'label' => '', 'required' => false]); ?> 
     <!-- input type="text" placeholder="Username or email" --> 
     <label for="">Password<span>*</span></label> 
     <?= $this->Form->input('passwords', ['type' => 'text', 'placeholder' => 'password', 'label' => '', 'required' => false]); ?> 
     <!-- input type="password" placeholder="Password" --> 
     <!-- button class="aa-browse-btn" type="submit">Login</button --> 
     <?= $this->Form->button('Submit', ['class' => 'aa-browse-btn']); ?> 
     <label for="rememberme" class="rememberme"><input type="checkbox" id="rememberme"> Remember me </label> 
     <p class="aa-lost-password"><a href="#">Lost your password?</a></p> 
     <div class="aa-register-now"> 
      Don't have an account?<a href='<?= $this->Url->build(['controller' => 'Users', 'action' => 'register']); ?>'>Register now!</a> 
     </div> 
     </form> 
     <?= $this->Flash->render(); ?> 
    </div>       
    </div><!-- /.modal-content --> 
</div><!-- /.modal-dialog --> 

を私は、ログイン入力が提供されている場合、ログイン作業を作成する方法を確認していませんホームページ。

答えて

3

フォームの動作を設定していないようです。このようにして、データはホームページに送信され、ログインアクションには送信されません。

echo $this->Form->create('User', 
[ 
    'class' => 'aa-login-form', 
    'url' => ['controller' => 'users', 'action' => 'login'] 
]); 

は参照

+0

ためmanualを参照してくださいあなたの助けをいただき、ありがとうございます。私はcakephpを初めて使っているので、実際にコード構造を理解することはできません。これは多くの助けになります。 – Anh