我試圖讓這個功能以所需的方式工作,但沒有多少運氣。好消息是,它是有效的。只有我想正確工作的是我所設置的字段驗證錯誤消息,但即使用戶名和密碼正確也無法登錄。我已經回滾了這個功能,希望有人能爲我提供一些幫助。CakePHP驗證,Auth中的錯誤消息和禁用修改。
function login() {
$this->layout = 'login';
$this->set('title_for_layout', 'Login');
if (!empty($this->data) && $id = $this->Auth->user('id')) {
$this->User->id = $id;
$this->User->saveField('last_login', date('Y-m-d H:i:s'));
$this->Session->setFlash(__('You have successfully logged in', true));
$this->redirect(array('action'=>'index'));
}
}
,我有在用戶模式設置驗證:
var $validate = array(
'username' => array(
),
'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',
),
),
'password' => array(
'notempty' => array(
'rule' => array('notempty'),
'message' => 'Password cannot be empty',
),
'length' => array(
'rule' => array('between', 5, 15),
'message' => 'Passwords must be between 5 and 15 characters long with no spaces',
'on' => 'create',
)
)
);
我現在取消設置特定的驗證規則的登錄,我只想得到驗證實際上是在正確的工作方式。
真的,我有三個問題......
爲什麼工作不正常我的驗證?
如何在我的視圖中顯示來自
AuthComponent
的消息?如何暫時禁用我的表中的
modified
字段進行更新?
非常感謝!
這裏:'&& $ id = $ this-> Auth-> user('id')'在你的if中。這是一個錯字嗎?應該是'=='或'==='。 – cspray
爲什麼你需要登錄驗證才能開始? –
@anh它更美觀的實際功能方面 - 我想我可以忍受會話閃爍;-) – Plastika