سلام
اگر قرار باشه قبل از اجرای در خواست کاربر (منظورم اجرای کنترلر/اکشن موجود در URL هست) بخواهیم یه سری کارهای مقدماتی انجام بدیم. مثلا زبان سیستم رو اگر در URL قید شده، تنظیم کنیم و یا IP کاربر رو چک کنیم که آیا مجاز به ورود به سایت هست یا نه. این کارها رو کجا باید انجام بدیم؟
شما در پروژه هاتون چه می کنید؟ دوست دارم روش شما رو بدونم.
من سعی کردم از فایل protected\components\Controller.php و یا فایل index.php که bootstrap محسوب میشه استفاده کنم. اما مشکلاتی برام پیش اومد.
مثلا در فایل bootstrap یا همون index.php اگه قبل از خط
Yii::createWebApplication($config)->run();
چیزی بنوسیم که خوب چون کانفیگ پیاده نشده پس مشکل داریم.
بعد از آن خط هم چیزی بنویسیم که میره بعد از اجرای همه کدها. پس عملا بی مصرف میشه چون می خوایم قبل از اجرای درخواست کاربر، کد ما اجرا بشه.
و بعد از اجرای این کدهای مقدماتی که توضیح دادم، ممکنه کاربر رو redirect کنیم به سمت کنترلر/اکشن مورد نظرش تا درخواستش اجرا بشه و شاید هم تصمیم بگیریم جلوی ورود کاربر و اجرای درخواستش رو بگیریم.
شرح بیشتر
در برخی فریم ورک ها مثل زندفریمورک، ما بحث base controller رو داریم که توش میشه یه سری کارهای اولیه (قبل از اجرای درخواست اصلی کاربر) مثل کنترل کردن IP یا نام کاربری کاربر به جهت بررسی مجاز بودنش برای ورود به سایت رو انجام داد. زبان سیستم رو از URL خوند و سپس برای اجرای درخواست کاربر، عمل dispatch رو انجام داد تا کنترلر/اکشن مورد نظر کاربر اجرا بشه.
در کتاب Yii 1.1 application cookbook در صفحه 55 مثالی برای ایجاد base controller گفته. اما چندان مناسب نیست و فکر می کنم راه حل بهتر و ساده تری هم احتمالا باشه.
(مثال کتاب فوق آمده و کلاس Controller رو اوراید کرده)

Help












