[rtl][font="Tahoma"][right]با سلام خدمت دوستان و اساتید محترم.
من چنتا سوال در مورد نحوه استفاده و کار با فرم ورک yii دارم:
1- برای استفاده از Controller ها و Model و View حتما باید از Gii استفاده کنم؟
2- من دو قسمت سایت دارم مثلا Admin و Site تو CodeIgniter دوتا کنترل می ساختیم یکی برای مدیریت و یکی هم برای قسمت سایت و می یومدیم تو پوشه View یه پوشه برای Site و یکی هم برای Admin ایجاد می کردم ( برای نظم دادن بیشتر بود ) و شروع می کردم به ایجاد صفحات خودم. تو yii چجوری اینکارو انجام بدم؟
بازم سوالی به ذهنم اومد می پرسم[/right][/font][/rtl]
۱. نه اجباری وجود نداره، اما خیلی توصیه میشه. کار رو برای شروع بسیار راحت میکنه و تغییر در کدی که ایجاد میکنه هم خیلی راحت هست
۲. در ساختار پیشنهادی که در نسخه 1.1 وجود داره، این ویژگی بصورت پیش فرض وجود نداره. شما میتونید این کار رو با ساختن یک ماژول admin یا backend در قسمت ماٰژول ها انجام بدید و به ساختار مورد نظر برسید. این روش عملی هست و اون نظم لازم رو ایجاد میکنه
روش دیگه هم استفاده از ساختارهایی هست که دیگر توسعه دهندگان تدارک دیدند، مثل yiinitializr . این ساختارها بسیار شبیه به چیزی هستند که قرار هست در yii 2 هم استفاده بشه و مناسب پروژه های بزرگ هستند
اگر تازه کار با این فرمورک رو شروع کردید، روش اول رو پیشنهاد میکنم. ساده تر و سریع تر ه
پ.ن: لطفا وقتی پست میگذارید از تگ rtl استفاده کنید تا راحت بشه خوند مطالب رو. اگر فونت tahoma هم بگذارید که دیگه چ بهتر!
نمونه اش میشه این: (فقط جای | از براکت استفاده کنید)
[rtl][font=“Tahoma”][right]آقا دست درد نکنه الان بهتر شد
من وقتی از Gii استفاده می کنمو وقتی میام CRUD درست می کنم خودش ویو می سازه با ساختار خودش ولی من می خوام که خودم سایتم رو طراحی کنم نه با استفاده از طراحی پیش فرض خود Yii[/right][/font][/rtl]
خب شما میتونی ویو هایی که میسازه رو کلا تغییر بدی، پاک کنی دوباره بنویسی یا روش layout اعمال کنی. فرم ها و gridview ای که میسازه به درد بخوره، بقیه اش رو راحت میشه بازنویسی کرد
[right][font="Tahoma"][rtl]1. من الان یک Module برای admin درست کردم و در قسمت module در config اونو اضافه کردم حالا چجوری نزارم که کاربر admin که لاگین نکرده و یا دیگر کاربران عادی به Controller های من دسترسی نداشته باشن؟
من برای قسمت admin و site خودم واسه هر کدوم یه layout جداگانه درس کردم که هر کدوم header,footer و content جداگانه ای دارن. حالا من در کجا مشخص کنم که در هنگام فراخوانی قسمت مدیریت من کدوم layout و برای قسمت دیگر یعنی سایت کدوم layout اجرا بشه؟ و این layout هارو باید در کجا ایجاد کنم؟
[font="Tahoma"][rtl]یک راه دیگه هم اینه که توی متد beforeControllerAction که توی فایل AdminModule.php توی پوشه ماژول شما قرار میگیره، اعتبارسنجی کاربر رو انجام بدین و توی accessRules دسترسی رو به @ بدین (کاربران لاگین شده). مثال:[/rtl][/font]
public function beforeControllerAction($controller, $action)
{
if(parent::beforeControllerAction($controller, $action))
{
// this method is called before any module controller action is performed
// you may place customized code here
if(Yii::app()->user->isGuest || Yii::app()->user->id != 1) {
throw new CHttpException(403, 'Unauthorized access');
}
return true;
}
else
return false;
}
[font="Tahoma"][rtl]الآن توی این کد من کاربر شماره 1 رو مجاز دونستم. این روش بخصوص برای زمانی مفیده که بخواین چند کاربر رو مجاز بدونید که دسترسی مدیریتی داشته باشن و با روشهایی مثل in_array میتونید اونها رو مجاز بدونید و بقیه رو غیرمجاز کنید.[/rtl][/font]