Данные виджета по умолчанию. widgetFactory и DI [Решено]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Данные виджета по умолчанию. widgetFactory и DI [Решено]

Сообщение nepster »

Хочу попробовать передать нужные дефолтные данные в виджет. Есть тестовый виджет, в котором всего 1 метод и 1 свойство.

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

    public $userId;

    public function run()
    {
        var_dump($this->userId);
    }
Итак, результат null. Теперь я хочу попробовать передать дефолтное значение:

В своем модуле я написал примерно следующее:

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

    
public function init () 
{
 \Yii::$container->set('Путь к моему виджету', ['userId' => 5]);
}
Результат все равно null. А как работает widgetFactory я не разобрался.

Подскажите пожалуйста как можно передать дефолтные значения в виджет двумя способами ?
Последний раз редактировалось nepster 2014.10.10, 10:24, всего редактировалось 1 раз.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Данные виджета по умолчанию. widgetFactory и DI

Сообщение nepster »

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

->widget[..тут..] 
Тут это понятно, что тут, но хочется попробовать другие методы, тогда "тут" не нужно будет тащить кучу конфигурации, если в модуле виджет используется много раз.

DI я разобрался, там просто не нужен был слеш впереди. А вот как сделать настройки по по дефолту в определенном виджете во всем приложении ? В yii1 был widgetFactory, а тут его нет. Если в приложении несколько модулей, в которых нужно активно использоваться виджет, хотелось бы глобально указать для него дефолтные настройки, например где-то в конфигурации приложения и при этом не делая виджет компонентом.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Данные виджета по умолчанию. widgetFactory и DI

Сообщение HQ0 »

А почему нельзя определить дефолтные настройки в самом виджете?
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Данные виджета по умолчанию. widgetFactory и DI

Сообщение maleks »

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

Yii::$container->set('Путь к моему виджету', ['userId' => 5]); 
ну по идее так правильно. Эти DI соответствия попробуй в файл конфига переместить.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Данные виджета по умолчанию. widgetFactory и DI

Сообщение nepster »

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

А почему нельзя определить дефолтные настройки в самом виджете? 
У меня около 10 модулей, в 7 из которых по раз 7 вызывается этот виджет. И мне лень тащить за собой покет одинаковых настроек.

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

ну по идее так правильно. Эти DI соответствия попробуй в файл конфига переместить. 
Да это работает, когда я размещаю в init необходимого мне модуля. В настройках врядли получится, так как main.php передается в само приложение и на тот момент просто функции yii2 недоступны.

Yii::$container->set - решает проблему на уровне модуля, но всеравно если модулей штук 7, то нужно 7 раз копировать в init один и тот-же код. Можно ли это ну прямо вообще глобально организовать по всему приложению ?
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Данные виджета по умолчанию. widgetFactory и DI

Сообщение HQ0 »

У меня около 10 модулей, в 7 из которых по раз 7 вызывается этот виджет. И мне лень тащить за собой покет одинаковых настроек.
Ну 10 модулей или 100. Почему нельзя дефолтные значения параметров виджета хранить в самом виджете?
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Данные виджета по умолчанию. widgetFactory и DI

Сообщение maleks »

nepster писал(а):

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

ну по идее так правильно. Эти DI соответствия попробуй в файл конфига переместить. 
Да это работает, когда я размещаю в init необходимого мне модуля. В настройках врядли получится, так как main.php передается в само приложение и на тот момент просто функции yii2 недоступны.
Сложно попробовать что ли? Все должно работать.

Вон в доках:
When to Register Dependencies:
If you are the developer of an application, you can register dependencies in your application's entry script or in a script that is included by the entry script.
Ответить