弹出登录Cakephp 3

问题描述 投票:0回答:1

如果我在home.ctp中创建一个链接到login.ctp的按钮,我可以执行登录功能。但是,如果登录输入在home.ctp中,我无法使其工作。 UsersController中的登录功能:

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');
}

在home.ctp中,我使用登录模式:

<!-- 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 -->

我只是不确定如何在主页中提供登录输入时使登录工作。

cakephp-3.0
1个回答
3
投票

看来你没有设置表单的动作。这样,数据将被发送到主页而不是登录操作。

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

请参阅manual以供参考

© www.soinside.com 2019 - 2024. All rights reserved.