رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نحوه نمایش فرم لاگین در شروع برنامه جهت ورود کاربر (حل شد)
#1
با سلام
لطفا در مورد نحوه تنظیم جهت نمایش loginForm هنگام شروع سایت مثلا در پروژه blog  را توضیح دهید
هدف من ورود کاربر پس از درج نام کاربری و کلمه عبور است
در پروژه blog وقتی در controller.php بصورت زیر تغییر ایجاد میکنیم در صفحه مقصد با خطا مواجه میشویم حتما باید در تعریف model اقداماتی انجام شود
public $layout='//site/login';
لطفا راهنمایی کنید
با تشکر
پاسخ
تشکر شده توسط:
#2
لطفاً بیشتر توضیح بدین دقیقاً میخواین چه کاری انجام بشه. اگه منظورتون اینه که کاربر بعد از ثبت نام، به صفحه لاگین هدایت بشه باید از کد زیر استفاده کنید:
$this->redirect(array('login'));

اما اگه میخواین قالب نمایش رو توی صفحه لاگین عوض کنید، باید توی اکشن لاگین این کد رو بنویسید:
$this->layout = '//site/login';

باز هم اگه بیشتر توضیح بدین چه کاری میخواین انجام بدین، بهتر میتونم راهنمایی کنم.
پاسخ
تشکر شده توسط: hfaal , sorkhabi
#3
سلام استاد
هدف من مشاهده سایت فقط توسط کاربران ثبت نام کرده امکانپذیر باشد و میخواهم برای ورود به سایت اول از طریق loginForm و درج نام کاربری و اسم رمز صورت پذیرد
ممنونم
پاسخ
تشکر شده توسط:
#4
خوب شما باید با رولها انجام بدین. مثال:
public function filters()
{
    return array('accessControl');
}

public function accessRules()
{
    return array(
        array('allow',
            'actions' => array('error', 'login'),
            'users' => '*',
        ),
        array('allow',
            'users' => '@',
        ),
        array('deny'),
    );
}
پاسخ
تشکر شده توسط: hfaal , abdollah110110 , sorkhabi
#5
این accessRulesها توی چه فایلی تعریف میشن؟
پاسخ
تشکر شده توسط: sorkhabi
#6
توی کنترلر موردنظرتون. مثلاً الان اینجا من برای کنترلر site گذاشتم. میتونید سطح دسترسی اکشنهای هر کنترلر رو به تفکیک مشخص کنید.
پاسخ
تشکر شده توسط: abdollah110110 , sorkhabi
#7
توی اکشن لاگین هم وقتی کاربر با موفقیت لاگین شد به مسیر زیر برگردونیدش:
$this->redirect(Yii::app()->user->returnUrl);

اینطوری اگه بدون لاگین وارد یه صفحه بشه که نیاز به لاگین داشته، فرستاده میشه به صفحه لاگین و بعد از اینکه لاگین کرد، دوباره به صفحه ای که موردنظرش بوده برمیگرده.
پاسخ
تشکر شده توسط: abdollah110110 , sorkhabi
#8
میشه یه متد accessRules برای همه کنترلرها در Controller تعریف کرد؟
پاسخ
تشکر شده توسط: sorkhabi
#9
بله میتونید توی کلاس Controller که توی components هست تعریف کنید. اگه اونجا خواستین به تفکیک کنترلرها عمل کنید، میتونین مشابه actions و users، از controllers هم برای تعیین کنترلرهایی که میخواین رول رو برای اونها تعریف کنید، استفاده کنید. مثال:
public function filters()
{
    return array('accessControl');
}
 
public function accessRules()
{
    return array(
        array('allow',
            'controllers' => array('site'),
            'actions' => array('error', 'login'),
            'users' => '*',
        ),
        array('allow',
            'users' => '@',
        ),
        array('deny'),
    );
}

الان اگه این کد رو توی کلاس Controller توی مسیر protected بگذارین، بجز اکشنهای error و login از کنترلر SiteController، تمام اکشنهای تمام کنترلرها نیاز به لاگین دارن.
پاسخ
تشکر شده توسط: abdollah110110 , sorkhabi , hfaal




کاربران در حال بازدید این موضوع: 4 مهمان