Yii2 - добавление DI через сигнатуру метода - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь реализовать внедрение действия контроллера в Yii2 Framework (версия 2.0.15).Вот мой код для действий контроллера:

public function actionTerms(Affiliate $affiliate)
{
    // action code
}

Зарегистрируйте зависимость в common / components / config / bootstrap.php

$container = Yii::$container;
$container->set('\common\components\Affiliate', '\common\components\Affiliate');

В результате я получаю сообщение об ошибке:

Missing required parameters: affiliate

Как это решить?

1 Ответ

0 голосов
/ 06 октября 2018

Yii 2 не поддерживает внедрение зависимостей в методы действий.Параметры действия зарезервированы только для параметров GET.

Если вы хотите использовать внедрение зависимостей в действии, вы должны использовать отдельное действие как отдельный класс:

class AffiliateAction extends Action {

    private $affiliate;

    public function __construct(string $id, Controller $controller, Affiliate $affiliate, array $config = []) {
        $this->affiliate = $affiliate;
        parent::__construct($id, $controller, $config);
    }

    public function run() {
        // do something with $this->affiliate
    }
}

Затем присоедините его к контроллеру:

public function actions() {
    return [
        'affiliate' => [
            'class' => AffiliateAction::class,
        ],
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...