2011-12-10 42 views
0

我有一个用户名,密码和提交按钮的视图。这个视图被称为login.ctp,所以我之前使用CakePHP的方式是我在页面顶部有一个<div>,在那个<div>登录将在所有页面中可见,所以基本上你可以从任何地方登录,我正在使用AJAX。我现在的问题是,我不知道如何在CakePHP中执行此操作,因为其他一些视图有<form>标记,我认为它也需要登录<form>标记?所以他们conflict..Also,所以两件事在页面顶部进行登录

  1. 我如何可以放置在页面顶部的div背部,使其与在UsersController我的登录功能的工作?

  2. 我该怎么做才能使<forms>不冲突?

相关的代码

<?php 
class UsersController extends AppController { 

    var $uses = array("User"); 
    var $components = array('Auth', 'Session'); 


    function index() 
    { 
     $this->set('users', $this->User->find('all')); 
     $this->layout = 'master_layout'; 
    } 

    function beforeFilter() { 
     $this->Auth->allow('add'); 
     } 

     function add() { 

      if (!empty($this->data)) { 
      //pass is hashed already 
      //->data['User']['password'] = $this->Auth->password($this->data['User']['password']); 
      if ($this->User->save($this->data)) { 
       $this->Session->setFlash('Your were registered!.'); 
           $this->redirect(array('action' => 'index')); 
      } 
      } 

     $this->layout = 'master_layout'; 
     } 

    //IF THE DATABASE IS SET UP CORRECTLY CAKE AUTHENTICATES AUTOMATICALLY NO 
    //LOGIC IS NEEDED FOR LOGIN http://book.cakephp.org/view/1250/Authentication 
    function login() { 
     $this->layout = 'master_layout'; 
     $this->data['User']['password'] = ''; 

    } 

    function logout() { 

    $this->redirect($this->Auth->logout()); 

    } 

} 
?> 

回答

1

这是非常简单的。如果你想要在不止一页上重复,你应该使用一个元素。在app/views/elements文件夹中创建loginform.ctp文件,只需将<?php echo $this->element('loginform'); ?>放在任何需要的位置。在你loginform.ctp文件,你应该有这样的事情:

<div id="loginform"> 
<?php echo $form->create('User', array('controller' => 'Users','action' => 'login')); ?> 
<?php echo $form->input('email', array('label' => 'Email')) ?> 
<?php echo $form->input('password',array('type'=>'password', 'label' => 'password')) ?> 
<?php echo $form->submit('Submit'); ?> 
</div> 

只要你指定哪个控制器和操作形式是,蛋糕会照顾它,这样的形式不冲突。

如果不工作,尽量只在html:

<form id="UserLoginForm" method="post" action="https://stackoverflow.com/users/login" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST" /></div><ul> 
<li><div class="input text required"><label for="UserEmail">Email</label><input name="data[User][email]" type="text" class="field text large" maxlength="255" value="" id="UserEmail" /></div></li> 
<li><div class="input password"><label for="UserPassword">password</label><input type="password" name="data[User][password]" class="field text large" value="" id="UserPassword" /></div></li> 
<li><div class="submit"><input type="submit" value="Submit" /></div></li> 
</ul> 
</form> 
+0

小问题swieckie,当我登录..它回来很好..但后来如果我去到另一个页面..欢迎'名称'消失就像忘记了会话? - 只有在我登录后才会出现欢迎'名字'..但是如果我改变页面..它不见了.. – user710502