Помимо ошибки, которую я обнаружил в своем комментарии, я вполне уверен, что ваша login
проверка не настроена правильно.
Вот что у вас есть:
'login' => array(
'rule' => 'isUnique',
'message' => 'This username has already been taken',
),
'pattern' => array(
'rule' => array('custom','/[a-zA-Z0-9\_\-]{6,}$/i'),
'message' => 'Must be 6 characters or longer with no spaces',
),
'length' => array(
'rule' => array('maxLength', 15),
'message' => 'Please keep username under 15 characters',
),
'notempty' => array(
'rule' => array('notempty'),
'message' => 'Username cannot be empty',
),
),
Вот что я думаю вы хотите иметь
'username' => array(
'isUnique' => array(
'rule' => 'isUnique',
'message' => 'This username has already been taken'
),
'pattern' => array(
'rule' => array('custom','/[a-zA-Z0-9\_\-]{6,}$/i'),
'message' => 'Must be 6 characters or longer with no spaces',
),
'length' => array(
'rule' => array('maxLength', 15),
'message' => 'Please keep username under 15 characters',
),
'notEmpty' => array(
'rule' => 'notEmpty',
'message' => 'Username cannot be empty',
),
),
Обязательные ссылки на CakePHP Book и CakePHP API .
<ч />
Ответ на ошибку от ОП в комментарии:
Теперь я понимаю, что вы пытались сделать. Попробуйте это:
$id = $this->Auth->user('id');
if (!empty($this->data) && $id) {
$this->User->id = $id;
<ч />
Ответ на вопрос «Как отобразить мое сообщение об ошибке входа в систему от AuthComponent
?»
Чтобы появилось сообщение об ошибке входа в систему, вам необходимо добавить следующую строку в свой макет или просмотреть форму входа в систему.
echo $this->Session->flash('auth');
<ч />
Ответ на вопрос «Как временно отключить поведение CakePHP modified
?»:
Итак, кратко рассмотрев исходный код и ответ на этот вопрос во внутреннем QA теста Cake, вы можете добавить что-то подобное перед сохранением данных.
$this->data['User']['modified'] = false;
Это говорит Cake не обновлять измененное поле.
Интересно, что из исходного кода можно легко заменить false
на true
, и это поле не будет обновлено. Я не знаю, так ли это на самом деле.