CakePHP 2.2 auth组件

时间:2012-09-27 08:01:55

标签: php cakephp-2.0

您好我是CakePHP的新手,我使用cakephp2.2编写了一个基本的登录页面。

这是我的AppController

class AppController extends Controller {

    var $components = array('Auth', 'Session');
    var $helpers = array('Form');
    public function appError($error) {
        //Do whatever you want
        debug($error);
    }

}

我的UsersController:app \ controller \ UsersController.php

class UsersController extends AppController {
    var $name = 'Users';
    var $components = array('Auth'); // Not necessary if declared in your app controller
    /**
    * The AuthComponent provides the needed functionality
    * for login, so you can leave this function blank.
    */
    function login() {
    }
    function logout() {
        $this->redirect($this->Auth->logout());
    }
}

我的观点:app \ user \ login.ctp

<?php
echo $this->Session->flash('auth');
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');
?>

我得到:漏洞UserController代码及以下错误

\ app \ Controller \ AppController.php(第41行) object(MissingControllerException){

}

1 个答案:

答案 0 :(得分:0)

你真的需要AppController的类声明,还是复制/粘贴错误?

<?php
  class AppController extends Controller {
    class AppController extends Controller {
    }
  }
?>

如果是这样,您应该删除第二个class AppController extends Controller语句。

此外,您尚未在FormHelperAppController中加入UsersController

<?php
  class AppController extends Controller {
    var $helpers = array('Form');
  }
?>

将其包含在AppController中会使其在整个Cake应用中都可用,或者您可以通过将其添加到UsersController将其提供给/app/Config/routes.php

修改 您的问题出现在应用程序的the routing部分。 Cake的默认安装在Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 中设置了一些路由。这是一个重要的路线:

PagesController

它将默认PagesController(每个Cake安装中包含的标准控制器)的方法连接到主视图。您可能已删除PagesController,这会引发错误。您可以重新创建Router::connect('/', array('controller' => 'users', 'action' => 'login', 'home')); (例如通过下载),或者您可以在访问应用程序时更新路由以将用户直接重定向到登录屏幕:

{{1}}