myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Yii2 как добавить компонент в модуль и как к нему обратиться?

Всем доброго дня!

Хочу добавить компонент, который будет доступен только в своём модуле. Создал компонент Pay
'pay' => [
     'class' => 'backend\modules\pay\PayModule',
],


В модуле инициализировал свой конфиг
public $controllerNamespace = 'backend\modules\pay\controllers';

    public function init()
    {
        parent::init();

        // инициализация модуля с помощью конфигурации, загруженной из config/main.php
        \Yii::configure($this, require __DIR__ . '/config/main.php');
    }


В конфиге указал тестовый компонент:
return [
    'components' => [
        'cash' => [
            'class' => 'backend\modules\pay\components',
        ],
    ],
];


В компоненте:
<?php

namespace backend\modules\pay\components\Cash;

use yii\base\Component;
use yii\helpers\Html;

class Cash extends Component
{
    public $content;

    public function init(){ // функция инициализации. Если данные не будут переданы в компонент, то он выведет текст "Текст по умолчанию"
        parent::init();
        $this->content= 'Текст по умолчанию';
    }

    public function display($content=null){ // функция отображения данных
        if($content!=null){ //проверка строки на пустоту
            $this->content= $content;
        }
        echo Html::encode($this->content); // вывод данных
    }
}


Вызываю компонент:
Yii::$app->getModule('pay')->cash->display('Привет мир')


Что я сделал не так? Выдаёт ошибку
Class backend\modules\pay\components does not exist
  • Вопрос задан
  • 1437 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
в конфиге не backend\modules\pay\components а backend\modules\pay\components\Cash нужно указывать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
08 мая 2024, в 17:12
50000 руб./за проект
08 мая 2024, в 16:40
70000 руб./за проект
08 мая 2024, в 16:29
500 руб./за проект