2011-11-06 105 views
1

我开始了与CakePHP的2.0,不能让过去一个简单的登录。这是我的代码:错误与CakePHP的表单助手2.0

的AppController:

class AppController extends Controller 
{ 
    function beforeFilter() 
    { 
     $this->Auth->userModel = 'User'; 
     $this->Auth->fields = array('username' => 'email', 'password' => 'password'); 
     $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
     $this->Auth->loginRedirect = array('controller' => 'hotels', 'action' => 'dashboard'); 
    } 
} 

UsersController:

class UsersController extends AppController 
{ 
    var $name = 'Users'; 
    var $helpers = array('Html','Form'); 
    var $components = array('Auth','Session'); 

    function beforeFilter() 
    { 
     $this->Auth->allow("logout"); 
     parent::beforeFilter(); 
    } 

    function logout() 
    { 
     $this->redirect($this->Auth->logout()); 
    } 

    function login() 
    { 
     if ($this->Auth->login()) 
     { 
      $this->redirect($this->Auth->redirect()); 
     } else 
     { 
      $this->Session->setFlash(__('Invalid username or password, try again')); 
     } 
    } 
} 

login.ctp:

echo $this->Form->create(); //'User', array('action' => 'login')); 
echo $form->Form->input('email'); 
echo $form->Form->input('password'); 
echo $form->Form->end('Login'); 

我得到的错误是这样的:

Notice (8): Undefined variable: form [APP\View\Users\login.ctp, line 13] 
Notice (8): Trying to get property of non-object [APP\View\Users\login.ctp, line 13] 
Fatal error: Call to a member function input() on a non-object in E:\proyectos\web\swt\app\View\Users\login.ctp on line 13 

任何想法?提前致谢!

回答

3

这些

echo $form->Form->input('email'); 
echo $form->Form->input('password'); 
echo $form->Form->end('Login'); 

应该

echo $this->Form->input('email'); 
echo $this->Form->input('password'); 
echo $this->Form->end('Login'); 
+0

我花了像2小时会在相同的代码,并没有看到这一点。非常感谢!我要踢自己,马上回来。 – Sandy

+0

有时需要一对不同的眼睛。这是这四个字母的单词 - 他们招来更多的四个字母的单词:) –

+0

作为快速跟进,我修改我的login()方法(见上文),我也得到一种形式,可以提交,但我实际上并不能登录。它总是显示Flash错误消息并将我返回到表单。任何想法?再次感谢 – Sandy