تمام سوالات سوالات بدون پاسخ سوال بپرسید

باسلام

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

کد من هم به شرح زیر می باشد:

../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;

}

بعد از این هم در فایل منو از theme انتخابی خود کد زیر را وارد کردم:

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

که بعد از اجرای برنامه وقتی نوبت به این خط از کد میرسد کلا برنامه خارج می شود و پیغام خطای ویژگیهای "CWebUser.UserGroup" تعریف نشده است. را نشان می دهد. من فکر کردم گفتم شاید این فیلد جدید رو باید خارج از ماژول در فایل زیر تعریف کنم ولی باز هم نتیجه فرقی نکرد و من همین پیغام خطا را داشتم:

../protected/components/UserIdentity.php

public function authenticate()
{
    $username = strtolower($this->username);
    $user=User::model()->find('LOWER(username)=?', array($username));

    if($user===null)
        $this->errorCode = self::ERROR_USERNAME_INVALID;
    else if(!$user->validatePassword($this->password))
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else{
            $this->_id=$user->id;
            $this->username =$user->username;
            $this->setState('UserGroup', $user->UserGroup);
            $this->errorCode=self::ERROR_NONE;
        }
    return $this->errorCode==self::ERROR_NONE;

}

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

لطفا به من بگید که چرا پارامتر جدید من رو نمیشناسه؟

1

چرا فیلد جدیدتون رو در کلاس NWebUser تعریف نمی کنید؟ یک کلاس از نوع کلاس CWebUser ایجاد کنید و این پارامتر رو اونجا تعریف کنید.

(15 دسامبر '13, 10:40) hamedkh ♦
1 پاسخ

سلام
یک بار logout کنید و مجددا login کنید. اگر در کدها مشکلی وجود نداشته باشه،مشکلی که مطرح کردید با این کار حل میشه.
موفق باشید.

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

(14 دسامبر '13, 15:00) tajeri

در کامپوننت برنامه چک کردید یا ماژول؟
میشه کد متد authenticate که این کار رو انجام میدید در سوالتون بنویسید؟

(14 دسامبر '13, 15:06) omid

من در ماژول رو چک کردم.

(14 دسامبر '13, 15:20) tajeri

در کامپوننت اصلی برنامه هم چک کنید و logout & login هم فراموش نشه بعد از هر تغییر.
اگر جواب نگرفتید،کد رو بنویسید تا بررسی بشه.

(14 دسامبر '13, 15:24) omid

در کامپوننت هم نوشتم ولی جوابی نگرفتم :(

(14 دسامبر '13, 15:29) tajeri

کد به نظر بنده کمی ایراد داره،چک کنید ببینید بلاک کدی که setState میکنید اصلا اجرا میشه؟
فکر میکنم اگر شما پسورد اشتباه هم بنویسید با این کد وارد میشه! البته در کد کامپوننت اصلی. این موضوع رو چک کنید لطفا.

(14 دسامبر '13, 15:39) omid
نمایش 5 از 6 نمایش همه
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×96
  • پرسیده شده: 14 دسامبر '13, 11:41
  • بازدید: 2,313 بار
  • آخرین بروزرسانی: 15 دسامبر '13, 10:41

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها