Страница 1 из 1

Проблемы с пониманием yii\di\Container

Добавлено: 2019.04.16, 21:04
masson
В файле config/main.php имеем следующее :

Код: Выделить всё

'container' => [
	'definitions' => [
		kartik\select2\Select2::class => [
			'theme' => kartik\select2\Select2::THEME_CLASSIC,
			....
		]
	]
]


В файле view.php следующее :

Код: Выделить всё

    <?php print_r(Yii::$container->getDefinitions()[Select2::class]) ?>	

    <?= $form->field($model, 'attr')->widget(Select2::class, [
        'data' => $model::getListData(),
    ]) ?>

В итоге - print_r выводит то что нужно, но сам виджет данные из контейнера не цепляет.
Если ввести данные из definitions непосредственно внутрь widget() - все работает как надо.
Никаких ошибок нет.
Правильно ли я понимаю что данные из конфига должны на автомате цепляться?

Linux Mint 18.3
Apache/2.4.18
PHP 7.2.17
Yii 2.0.17.
Что делаю не так?

Re: Проблемы с пониманием yii\di\Container

Добавлено: 2019.04.19, 01:14
uEhlO4a
насколько я помню, то что ты указываешь
[
'data' => $model::getListData(),
]
переписывает тебе
'theme' => kartik\select2\Select2::THEME_CLASSIC,

я не проверял, но попробуй сделать
<?= $form->field($model, 'attr')->widget(Select2::class)?>
и 'theme' должно примениться.

если оно, то наверно один выход, это писать

'container' => [
'definitions' => [
kartik\select2\Select2::class => function ($container, $params, $config) {
return new kartik\select2\Select2(array_merge($params, ['theme' => kartik\select2\Select2::THEME_CLASSIC,]));
}
]
]