BMR
(Bmrbehnam)
1
[font="Tahoma"][right]سلام من برای فراموشی پسورد این کد رو نوشتم ، در این کد متد سیو فالس بر میگردونه دلیلش هم ولیدیشن های مدل یوذر است
من فقط میخوام فیلد تکن رو آپدیت کنم اما نمیشه راهنمایی کنید ؟[/right][/font]
SiteContoller/actionforget :
$user = User::model()->findByAttributes(array('email' => $email));
$user->token = sha1(md5($user->username));
$user->save();
var_dump($user->getErrors());
EmadGh
(Emadghasemi 2006)
2
[rtl]سلام
آرایه ای از فیلدای مورد نظرتون رو به متد سیو بدید…
[/rtl]
$user->save(array('token'));
BMR
(Bmrbehnam)
3
[font="Tahoma"][right]باز هم ، همون ارور ها رو داره[/right][/font]
EmadGh
(Emadghasemi 2006)
4
[size="2"][rtl]خوب عزیز اروراشم بگو :|[/size][size="2"]من از کجا الان باید بدونم همون ارورا چیه که بگم چیکار کنی ؟ [/size][/rtl]
BMR
(Bmrbehnam)
5
[right]ارور ها هربوط به ارور های ویلیدیشن های مدل یوذر است.
[/right]
User/rule :
array('fname, lname, username, email, password,password_repeat', 'required'),
array('email', 'email'),
array('password', 'compare', 'on' => 'create'),
array('username,email,display_name', 'unique'),
array('gplus', 'url'),
array('username', 'length', 'max' => 20,'min'=>5),
array('token','safe'),
array('email, password', 'length', 'max' => 50),
array('password', 'compare', 'on' => 'insert'),
array('verifyCode', 'captcha', 'allowEmpty' => !CCaptcha::checkRequirements(), 'caseSensitive' => false),
ارور ها :
array(3) { ["password_repeat"]=> array(1) { [0]=> string(58) "تکرار پسورد نمی تواند خالی باشد." } ["gplus"]=> array(1) { [0]=> string(54) "گوگل پلاس یک URL معتبر نمی باشد." } ["verifyCode"]=> array(1) { [0]=> string(36) "کد تأیید معتبر نیست." } }
EmadGh
(Emadghasemi 2006)
6
[rtl]
از سناریو استفاده کن
یه رول جدید اضافه کن
[/rtl]
array('token', 'required','on'=>'update_token'),
[rtl]
[/rtl]
$user->scenario='update_token';
BMR
(Bmrbehnam)
7
[font="Tahoma"][right]ممنون،حل شد.
از سناریو استفاده کردم ولیدیشن ها به صورت زیر تغییر دادم :[/right][/font]
array('fname, lname, username, email, password,password_repeat', 'required','except' => 'update_token'),
SiteController/actionforget :
$email = $_POST['user']['email'];
$user = User::model()->findByAttributes(array('email' => $email));
$user->scenario='update_token';
$user->token = sha1(md5($user->username));
if($user->save(array('token'))){
Yii::app()->user->setFlash('forgot', 'ok');
$this->refresh();