相关疑难解决方法(0)

在Symfony2中,为什么注入服务容器而不是单个服务是个坏主意?

我找不到这个答案......

如果我注入服务容器,如:

// config.yml
my_listener:
   class: MyListener
   arguments: [@service_container]

my_service:
   class: MyService

// MyListener.php
class MyListener
{
    protected $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function myFunction()
    {
        $my_service = $this->container->get('my_service');
        $my_service->doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后它的工作方式和我做的一样:

// config.yml
my_listener:
   class: MyListener
   arguments: [@my_service]

my_service:
   class: MyService

// MyListener.php    
class MyListener
{
    protected $my_service;

    public function __construct(MyService $my_service)
    {
        $this->my_service = $my_service;
    }

    public function myFunction()
    {
        $this->my_service->doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

那么为什么我不应该只注入服务容器,并从我的类中获取服务?

dependency-injection symfony

21
推荐指数
3
解决办法
5576
查看次数

如何在Symfony2中的Form Builder类中访问用户角色

我有UserType像这样的字段的形式

->add('description')
  ->add('createdAt')
Run Code Online (Sandbox Code Playgroud)

现在我希望如果登录用户有角色,(ROLE_SUPERADMIN)那么他可以看到这样的额外字段

 ->add('description')
if($user.hasRole(ROLE_SUPERADMIN))
->add('createdAt')
Run Code Online (Sandbox Code Playgroud)

实际上我必须为许多领域做到这一点.是否有任何方式我可以制作一些自定义类型,以便如果那种类型,那么只有管理员可以看到那些

->add('createdAt',"MyCustomType")

php symfony doctrine-orm

16
推荐指数
1
解决办法
8294
查看次数

标签 统计

symfony ×2

dependency-injection ×1

doctrine-orm ×1

php ×1