I need to parse some configurations parameters from my config.yml such as enabled languages. But when i try to do that by using the normal symfony method: $this->container->get('my_params');
it fails because my admin class extends Sonata\AdminBundle\Admin\Admin
class which does not extend the Symfony\Component\DependencyInjection\ContainerAware
class.
Please, How to get the container inside the sonata Admin class ?
Now i'm resolving this problem by overriding the sonata Admin Class to make it extends the ContainerAware.
probably already resolved, because its an old question, but just for reference, the container is already available in admin class using the configuration pool...
$this->getConfigurationPool()->getContainer();
Of course, it is better practice to inject services in the admin class, but, like in the controllers. why would someone, take the time to configure setter injection if already has the container available?
Add in your Admin class
/** @var \Symfony\Component\DependencyInjection\ContainerInterface */
private $container;
public function setContainer (\Symfony\Component\DependencyInjection\ContainerInterface $container) {
$this->container = $container;
}
And add calls in services configuration(configuration can be specified in YAML, XML or PHP):
YAML
calls:
- [ setContainer, [ @service_container ] ]
XML
<call method="setContainer">
<argument type="service" id="service_container" />
</call>
Now you can using the normal symfony method: $this->container->get()
For more information see Service Container documentation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With