Php Yii2-通过方法签名的DI注入
我尝试在Yii2框架(版本2.0.15)中实现控制器动作注入。以下是我的控制器操作代码:Php Yii2-通过方法签名的DI注入,php,dependency-injection,yii2,Php,Dependency Injection,Yii2,我尝试在Yii2框架(版本2.0.15)中实现控制器动作注入。以下是我的控制器操作代码: public function actionTerms(Affiliate $affiliate) { // action code } 在common/components/config/bootstrap.php中注册依赖项 $container = Yii::$container; $container->set('\common\components\Affiliate', '\co
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
如何解决这个问题?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,
],
];
}