получаю досадную ошибку в действии регистра.неожиданный T_STRING - PullRequest
0 голосов
/ 22 августа 2010

настраивая мою аутентификацию, в моем 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());
}


}



?>

Может кто-нибудьвидите, что не так?

Джонси

Ответы [ 4 ]

2 голосов
/ 22 августа 2010

Вам не хватает пары дефисов в строке 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'])) {

Я думаю, что вы 'Он более чем способен проверять ваши собственные синтаксические ошибки в будущем.

0 голосов
/ 24 августа 2010

Если вы используете Auth, вам может понадобиться учесть несколько вещей.В beforeFilter вам нужно добавить:

$this->Auth->allow('register', 'login', 'logout');

Это даст любому разрешение на доступ к ним.

То, что вам нужно знать, это как исправлять ошибки синтаксиса.Вот что я предлагаю для начала.Прямо перед строкой 20 введите:

pr($this->data);
exit;

Запустите его еще раз и посмотрите, что выводится в браузер.Вы сможете увидеть, какие значения поступают (если есть), и это может привести к решению.

0 голосов
/ 23 августа 2010

Пожалуйста, опубликуйте текст ошибки. Вполне возможно, что он ссылается на строку 20 в представлении (файл ctp), а не на контроллер, и кажется вероятным, поскольку нет ничего очевидного в вашем коде. Ошибка, которую я виноват в том, что совершаю себя время от времени.

0 голосов
/ 22 августа 2010

Причина (ы):

Функция empty не будет работать с атрибутом объекта, когда объект использует метод __get (и, возможно, класс AppController делает это).

Кроме того, помните (но не для вашего случая): empty() проверяет только переменные, так как все остальное приведет к ошибке разбора. Другими словами, следующее не будет работать: empty(trim($name)).

Кроме того, (но не для вашего случая): поскольку empty является языковой конструкцией, а не функцией, ее нельзя вызывать с использованием переменных функций

Решение:

Поэтому, пожалуйста, создайте свою собственную пустую функцию или напрямую сравните значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...