Bootstrapping به فرایندی از آماده کردن محیط قبل از شروع application برای مدیریت یک درخواست اشاره میکنه. به عنوان مثال، اگر تصمیم دارید قبل از اجرای application یکسری تنظیمات خاص برای کاربران تعریف بشه Bootstrapping گزینه ی مناسبی برای این کار هست. backend/components/bootstrap محل خوبی برای نوشتن یک کلاس از این نوع میتونه باشه.
namespace backend\components\bootstrap;
use Yii;
use yii\base\Application;
use yii\base\BootstrapInterface;
class Setting implements BootstrapInterface
{
public function bootstrap($app)
{
$settingModel = \dashboard\modules\setting\models\Setting::find()->one();
Yii::$app->language = $settingModel->language;
Yii::$app->timeZone = $settingModel->time_zone;
}
}
کلاس باید از BootstrapInterface مشتق بشه و به دلیل اینکه کلاس پدر interface هست تعریف متد bootstrap اجباریه.
app به Application جاری که در حال اجراست اشاره میکنه و با استفاده از اون به همه چیز دسترسی دارید. مثلا تعریف عنوان Application:
$app->view->title = 'my title';
یا اضافه کردن یک فایل css به صفحه و...
$app->view->registerCssFile(Yii::$app->homeUrl . 'web/css/index.css');
در کلاس Setting که به عنوان نمونه کدش رو دیدیم زبان و منطقه زمانی از دیتابیس دریافت و برای کاربر ست میشه. حالا باید مشخص کنیم که این کلاس در مرحله bootstrap اجرا بشه. این یک مرحله قبل از شروع Application هست و در اون متد bootstrap که در کلاس Setting داریم صدا زده خواهد شد. برای این کار به backend/config/main.php مراجعه کنید. در پیکره بندی Application شما یک کلید به نام bootstrap وجود داره، کلاس Setting رو بهش اضافه کنید تا این کار انجام بشه.
'bootstrap' => ['log', 'backend\components\bootstrap\Setting'],