这里详细描述问题
support\Request 注入报错
use support\Request;
class WalletController
{
protected $network;
public function __construct(Request $request)
{
$this->network = $request->get('network', 'xxx');
}
public function test(){
return $this->network;
}
DI\Definition\Exception\InvalidDefinition: Entry "plugin\wallet\app\controller\WalletController" cannot be resolved: Entry "support\Request" cannot be resolved: Parameter $buffer of __construct() has no value defined or guessable
Full definition:
Object (
class = support\Request
lazy = false
__construct(
$buffer = #UNDEFINED#
)
)
这是插件里的container.php
php7.4 ,webman1.5.9
config/dependence.php 里加一句
咦,我在插件里的config/dependence.php,加这一句没效果。但是在外面的config/dependence.php,加这一句解决了
因为你container.php里第三行调用的
$builder->addDefinitions(config('dependence',[]));
,应该调用
$builder->addDefinitions(config('plugin.wallet.dependence',[]));
我在插件里的container/php 按你说的,修改为$builder->addDefinitions(config('plugin.wallet.dependence',[]));。然后对应插件的plugin/wallet/config/dependence.php 配置了。也不生效。 但是在控制器里,用config('plugin.wallet.dependence')是能获取到值的。
@walkor 知道这是什么原因么。 插件 的container.php $builder->addDefinitions(config('plugin.wallet.dependence',[])); 会获取不到值,导致不生效。 但控制器里是可以的。
配置加载有先后顺序,加载config/container.php配置的时候config/dependence.php还没有载入导致的
@walkor 那也就是说,插件需要开启依赖注入,只能在 主项目下的dependence 定义是么。
暂时只能在config/container.php里面手动include进去
好的, 谢谢老大