با سلام
لطفا در مورد نحوه تنظیم جهت نمایش loginForm هنگام شروع سایت مثلا در پروژه blog را توضیح دهید
هدف من ورود کاربر پس از درج نام کاربری و کلمه عبور است
در پروژه blog وقتی در controller.php بصورت زیر تغییر ایجاد میکنیم در صفحه مقصد با خطا مواجه میشویم حتما باید در تعریف model اقداماتی انجام شود
public $layout='//site/login';
لطفا راهنمایی کنید
با تشکر
لطفاً بیشتر توضیح بدین دقیقاً میخواین چه کاری انجام بشه. اگه منظورتون اینه که کاربر بعد از ثبت نام، به صفحه لاگین هدایت بشه باید از کد زیر استفاده کنید:
$this->redirect(array('login'));
اما اگه میخواین قالب نمایش رو توی صفحه لاگین عوض کنید، باید توی اکشن لاگین این کد رو بنویسید:
$this->layout = '//site/login';
باز هم اگه بیشتر توضیح بدین چه کاری میخواین انجام بدین، بهتر میتونم راهنمایی کنم.
سلام استاد
هدف من مشاهده سایت فقط توسط کاربران ثبت نام کرده امکانپذیر باشد و میخواهم برای ورود به سایت اول از طریق loginForm و درج نام کاربری و اسم رمز صورت پذیرد
ممنونم
خوب شما باید با رولها انجام بدین. مثال:
public function filters()
{
return array('accessControl');
}
public function accessRules()
{
return array(
array('allow',
'actions' => array('error', 'login'),
'users' => '*',
),
array('allow',
'users' => '@',
),
array('deny'),
);
}
این accessRulesها توی چه فایلی تعریف میشن؟
توی کنترلر موردنظرتون. مثلاً الان اینجا من برای کنترلر site گذاشتم. میتونید سطح دسترسی اکشنهای هر کنترلر رو به تفکیک مشخص کنید.
توی اکشن لاگین هم وقتی کاربر با موفقیت لاگین شد به مسیر زیر برگردونیدش:
$this->redirect(Yii::app()->user->returnUrl);
اینطوری اگه بدون لاگین وارد یه صفحه بشه که نیاز به لاگین داشته، فرستاده میشه به صفحه لاگین و بعد از اینکه لاگین کرد، دوباره به صفحه ای که موردنظرش بوده برمیگرده.
میشه یه متد accessRules برای همه کنترلرها در Controller تعریف کرد؟
بله میتونید توی کلاس 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، تمام اکشنهای تمام کنترلرها نیاز به لاگین دارن.