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

}

我的用户控制器: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');
?>

我得到:洞用户控制器代码和以下错误

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

}

4

1 回答 1

0

您真的必须为 AppController 进行类声明,还是复制/粘贴错误?

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

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

此外,您还没有将 包含FormHelper在您的AppControllernorUsersController中。

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

将它包含在AppController将使它在您的整个 Cake 应用程序中可用,或者您可以UsersController通过将其添加到那里来使其可用。

编辑: 您的问题出在应用程序的路由部分。Cake 的默认安装在/app/Config/routes.php. 这是一条重要的线:

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

它将默认方法PagesController(这是每个 Cake 安装中包含的标准控制器)连接到主视图。您可能已经删除了 PagesController引发错误的 . 您可以重新创建PagesController(例如通过下载它),或者您可以更新您的路线以在用户访问您的应用程序时将他们直接重定向到登录屏幕:

Router::connect('/', array('controller' => 'users', 'action' => 'login', 'home'));
于 2012-09-27T09:51:12.463 回答