Ответы пользователя по тегу Yii
  • Как реализовать компонент в модуле yii2?

    Screamie
    @Screamie
    Full-stack разработчик
    Здравствуйте.

    Модуль это по сути экземпляр приложения и он позволяет использовать сервис локатор и DI как и сам Yii2.

    Если я правильно понимаю ваш вопрос, то вам нужно подключить в конфигурации модуля ваш компонент через DI контейнер. Тогда он будет доступен из модуля.

    В конфигурации это может выглядеть примерно так:

    //...
    'modules' => [
    
            'shop' => [
                'class' => 'common\modules\shop\Module',
                'components' => [
    
                    'cart' => [
                        'class' => 'common\modules\shop\components\Cart',
                        'property' => 'value',
                    ],
                ],
            ],
    ],
    //...


    В классе common\modules\shop\Module заводите публичные поля components и cart. А в методе common\modules\shop\Module::init() осуществляете инициализацию вашего компонента Cart через
    $this->cart = Yii::createObject($this->components['cart']), как написано в оф.доках:

    // create an object using a configuration array
    $object = Yii::createObject([
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ]);


    Можно все это сделать и без конфигурирования, просто используя DI в методе init() вашего модуля. Но тогда код будет сильно связанным и вы не сможете конфигурировать ваш компонент без правок кода модуля.
    Ответ написан
    1 комментарий
  • Как проверить существоние объекта в Yii2?

    Screamie
    @Screamie
    Full-stack разработчик
    Можно сделать проверку через Yii::$app->user->isGuest
    Ответ написан
    6 комментариев
  • Как избавиться от ошибки foreach?

    Screamie
    @Screamie
    Full-stack разработчик
    В foreach вы передаете переменную $notification, а где ее инициализация? В этой переменной должен содержаться массив объектов. А приходит, видимо, null.
    Ответ написан