我有一个用户名,密码和提交按钮的视图。这个视图被称为login.ctp
,所以我在CakePHP之前的方式是在页面顶部有一个<div>
,在<div>
中,所有登录都可以看到这些页面基本上你可以从任何地方登录,我使用的是AJAX。我现在的问题是我不知道如何在CakePHP中执行此操作,因为其他一些视图都有<form>
标记,我认为登录也需要<form>
标记?所以他们发生冲突......还有两件事
如何将该div放回页面顶部并使其与UsersController
中的登录功能一起使用?
我怎样才能使<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());
}
}
?>
答案 0 :(得分: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>
只要您指定表单所针对的控制器和操作,Cake就会处理它,以便表单不会发生冲突。
如果这不起作用,请尝试使用html:
<form id="UserLoginForm" method="post" action="/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>