在文件service.yaml中,我有:
parameters:
security.allows.ip:
- '127.0.0.1'
- '127.0.0.2'或者:
parameters:
security.allows.ip: ['127.0.0.1', '127.0.0.2']和DI的配置:
services:
_defaults:
autowire: true
autoconfigure: true
public: false我想为类配置服务:
security.class:
class: App\Class
arguments:
- '%security.allows.ip%'最后我有话要说:
无法自动更新服务"App\Class":方法"__construct()“的参数”__construct“必须具有类型提示或显式地给出值。
构造函数的定义是:
public function __construct(array $securityConfiguration)你能帮我一下吗?在symfony 2.8中,它可以工作,但是对于这个配置,我有这样的错误。类型提示字符串的其他服务是可以的,但对于这个类则不行。如果我添加容器接口来构造这个类,并通过->getParameter('security.allows.ip')获取参数,它就能工作。为什么?
发布于 2018-02-21 21:34:19
为了使自动导航系统工作,该类型需要匹配一个服务id。这里的问题是,您有另一个类,您正在尝试将您的名称相当糟糕的App\Class注入其中。
class SomeOtherClass {
public function __construct(App\Class $appClass)当您创建AppClass服务时,您为它提供了一个security.class id。因此,autowire查找App\Class的服务id,没有找到它,然后尝试创建一个。当然,它也不能自动形成一个阵列。
解决这一问题的一种方法是使用别名:
security.class:
class: App\Class
arguments:
- '%security.allows.ip%'
App\Class: '@security.class'第二种(推荐的)方法是完全取消security.class id。
App\Class:
arguments:
- '%security.allows.ip%'如果你真的想成为一个酷小子,你甚至可以删除参数关键字。
App\Class:
$securityConfiguration: '%security.allows.ip%'https://stackoverflow.com/questions/48915494
复制相似问题