Search code examples
phpsymfonydependency-injectionsymfony-security

Use the chain provider defined from a service


I use multiple user providers in my app:

security:
    providers:
        chain_provider:
            chain:
                providers: [entity, json]
        entity:
            id: myapp.entity.user_provider
        json:
            id: myapp.json.user_provider

Now I need to load a user from a service

services:
    myapp.my.service:
        class: AppBundle\Services\My
        argument: [@the.defined.chain.provider]
// AppBundle\Services\My
namespace AppBundle\Services;
class My
{
    public function loadUser($username)
    {
        return $this->userProvider->loadUserByUsername($username);
    }
}

How can I use the chain provider explicitly ?


Solution

  • By looking at the code of SecurityBundle, you just can use the service security.user.provider.concrete.{name}, so in your case security.user.provider.concrete.chain_provider