设置我的身份验证,在我的users_controller中,我有一个下面列出的注册操作。我在第20行遇到错误
if (!empty($this->data)) {
错误是:
syntax error, unexpected T_STRING
这是我的整个users_controller:
<?php
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Time', 'Crumb', 'Html', 'Form');
var $components = array('Auth');
function index() {
$this->set('users', $this->User->find('all'));
}
function view($id = null) {
$this->User->id = $id;
$this->set('user', $this->User->read());
}
function register() {
if (!empty($this->data)) {
if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
$this->User->create();
$this->User->save($this->data);
$this->redirect(array('action' => 'index'));
}
}
}
function beforeFilter() {
parent::beforeFilter();
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
}
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
}
?>
有人能看到什么错误吗?
Jonesy
答案 0 :(得分:2)
你在第19行丢失了几个连字符。
if ($this->data['User']['password'] == $this->Auth >password($this>data['User']['password_confirm'])) {
应该是
if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
我认为你将来能够检查自己的语法错误。
答案 1 :(得分:0)
请发布错误文字。它完全有可能在视图(ctp文件)中引用第20行,而不是控制器,并且似乎可能因为代码没有明显的错误。我犯了一个错误,我现在一次又一次地犯了罪。
答案 2 :(得分:0)
如果您使用Auth,您可能需要考虑一些事项。在beforeFilter
您需要添加:
$this->Auth->allow('register', 'login', 'logout');
这将授予任何人访问这些权限的权限。
您需要了解的是如何解决语法错误。这是我建议的开始。就在第20行之前:
pr($this->data);
exit;
再次运行它,看看输出到浏览器的内容。您将能够看到正在进入的值(如果有的话),它可能会导致解决方案。
答案 3 :(得分:-1)
当对象使用__get方法时,empty
函数不能对对象的属性起作用(也许AppController类正在这样做)。
另外,请记住(不过你的情况):
empty()
仅检查变量,因为其他任何内容都会导致解析错误。换句话说,以下内容不起作用:empty(trim($name))
。
此外,(不适用于您的情况):因为empty
是语言结构而不是函数,所以无法使用变量函数调用它
因此,请创建您自己的空函数或直接比较值。