您好我是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){
}
答案 0 :(得分:0)
你真的需要AppController的类声明,还是复制/粘贴错误?
<?php
class AppController extends Controller {
class AppController extends Controller {
}
}
?>
如果是这样,您应该删除第二个class AppController extends Controller
语句。
此外,您尚未在FormHelper
或AppController
中加入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}}