اضافه کردن فیلدهای دیگر به Yii::app()->User

Ba salam

Man az User Module estefade kardam. Be table user chand field ezafe kardam. Hala mikham dar kharej az in module va dar file menu az theme entekhabie khodam ye mahdudiyati roe mal konam masalan begam age meghdare in field haye jadidi ke ezafe kardam barabar ba true boud barkhi az menu ha ro neshun bede.

Baraye in kar linke zir ro peida kardam:

http://www.yiiframework.com/wiki/6/how-to-add-more-information-to-yii-app-user/

vali natunestam bahash kar konam man fielde jadidam ro dar code ezafe kardam vali vaghti tu hamin menu mikham azash estefade konam mige ke in field ro nemishnase.

Mishe be man komak konid ke chegune az in field ha dar kharej az module estefade konam?

فارسی بنویس

اگه نداری هم می تونی از این سرویس های فینگلیش به فارسی استفاده کنی

Dorud,

Chon finglish neveshtid man ham finglish pasokh midam!

Dar ghesmate user identity bayad fild morede nazar ro tarif konid masalan code zir:




      $this->setState('age', $users->age);



agar ma dar table userha fildi ba onvane ‘age’ dashte bashim ba code bala baraye sistem moshakhas mikonim ke in fild ro bayad ba’d az vorude user negah dare, va ba’d ba codi shabihe zir mitunid behesh dastresi peida konid:




$userAge = Yii::app()->users->age;

echo $userAge;



[font="Tahoma"][color="#808080"][rtl]چون بحث فینگلیشه، با پوزش من اون رو نخوندم و دنبال نمیکنم و سراغ تیکت بعدی میرم.

فقط داشتم بلند بلند فکر میکردم، ببخشید ;)

البته برخی دیگر دوستان احتمالاً توی دلشون فکر میکنند و به هر حال رد میشن! ;)[/rtl][/color][/font]

[font="Tahoma"][right]دست همگی کاربران که من یک کاربر تازه وارد رو رد کردند درد نکنه.

با عرض پوزش از شما اساتید. من فارسی نوشته بودم ولی چون بعضی جاها باید انگلیسی مینوشتم و در اینصورت هم کل متن جابجا میشد و کلا ناخوانا بود گفتم فینگیلیش بنویسم.

ای بابا با یک کاربر تازه وارد که یه عالمه مشکل داره اینجوری برخورد نکنید. گناه داره.[/right][/font]

[right]ممنون از پاسخ شما. خوبه که شما بهم پاسخ دادید و منو ناامید برنگردوندید

من اینکار رو کردم ولی با پیغام خطای زیر مواجه شدم

ویژگیهای "CWebUser.typeOfUser" تعریف نشده است.

من فایل ماژول رو تغییر ندادم فایلی که در

protected\components

هست رو تغییر دادم.[/right]

[font="Tahoma"][rtl]

دوست عزیز، متنتون رو با کمک Styleهای بالای بخش درج پاسخ، بصورت RTL در بیارین و از فونت Tahoma هم استفاده کنید. برای اینکه خودتون هم توی ادیتور سایت متن رو موقع تایپ، درست ببینید، Ctrl+Shift سمت راست رو بزنید تا کادر متن، راست به چپ بشه. اونوقت به راحتی میتونید فارسی بنویسید.

[/rtl][/font]

[font="Tahoma"][rtl]این عکس رو هم براتون آماده کردم که بهتر نحوه فارسی نوشتن رو توضیح داده:[/rtl][/font]

[font="Tahoma"][rtl]

سلام

دوست عزیز لطفا کد خودت رو بنویس تا بقیه دوستان بهتر بتونن راهنماییت کنن

اینکه میگن فارسی بنویس و … هم بخاطر خودت هست بدل نگیر

هم اینکه فهم مشکلت خیلی ساده تر و سریع تر میشه

و …

[/rtl][/font]

[font="Tahoma"][rtl]خیلی ممنون آقای قلی زاده.

من از ماژول User استفاده می کنم. در جدول user از پایگاه داده این ماژول فیلدی به نام UserGroup اضافه کردم. حالا میخواهم برای نشان دادن منوها، شرطی بذارم که اگه مقدار این فیلد جدید برابر با manager بود تمامی گزینه های منو را نشان دهد و اگر مخالف آن بود فقط تعداد محدودی از منوها را نشان دهد.[/rtl][/font]

[rtl]کد من هم به شرح زیر می باشد:[/rtl]

../protected/modules/user/components/UserIdentity.php


public function authenticate()

	{

		if (strpos($this->username,"@")) {

			$user=User::model()->notsafe()->findByAttributes(array('email'=>$this->username));

		} else {

			$user=User::model()->notsafe()->findByAttributes(array('username'=>$this->username));

		}

		if($user===null)

			if (strpos($this->username,"@")) {

				$this->errorCode=self::ERROR_EMAIL_INVALID;

			} else {

				$this->errorCode=self::ERROR_USERNAME_INVALID;

			}

		else if(Yii::app()->getModule('user')->encrypting($this->password)!==$user->password)

			$this->errorCode=self::ERROR_PASSWORD_INVALID;

		else if($user->status==0&&Yii::app()->getModule('user')->loginNotActiv==false)

			$this->errorCode=self::ERROR_STATUS_NOTACTIV;

		else if($user->status==-1)

			$this->errorCode=self::ERROR_STATUS_BAN;

		else {

			$this->_id=$user->id;

			$this->username=$user->username;

			$this->setState('UserGroup ', $user->UserGroup );

			$this->errorCode=self::ERROR_NONE;

		}

		return !$this->errorCode;

	}

[font="Tahoma"][rtl]بعد از این هم در فایل منو از theme انتخابی خود کد زیر را وارد کردم:[/rtl][/font]

Yii::app()->user->UserGroup;

[font="Tahoma"][rtl]که بعد از اجرای برنامه وقتی نوبت به این خط از کد میرسد کلا برنامه خارج می شود و پیغام خطای ویژگیهای [color="#FF0000"]"CWebUser.UserGroup" تعریف نشده است.[/color] را نشان می دهد.

من فکر کردم گفتم شاید این فیلد جدید رو باید خارج از ماژول در فایل زیر تعریف کنم ولی باز هم نتیجه فرقی نکرد و من همین پیغام خطا را داشتم:[/rtl][/font]

../protected/components/UserIdentity.php

[font="Tahoma"][rtl]این پست رو دیگه کاملا فارسی گذاشتم البته به کمک راهنمایی های خوب دوستان.

لطفا کمکم کنید.[/rtl][/font]

[font="Tahoma"] [rtl]ممنون که فارسی نوشتی.

از این استفاده کن:

[/rtl]


Yii::app()->user->getState('UserGroup')

[rtl]ضمناً در این خط:[/rtl]


$this->setState('UserGroup ', $user->UserGroup );

   	    	  	^^^^^

[rtl]یک فاصله زیاد زدی

[/rtl]

[/font]