'Symfony: access property of EntityManagerDecorator
I need to decorate an Symfony EntityManager and access a property that I inject in it from ouside, but it always says that this is Undefined Property.
This is config:
app.decorated.doctrine.orm.default_entity_manager:
class: App\Decorator\EntityManager
public: false
decorates: "doctrine.orm.default_entity_manager"
arguments:
- "@app.decorated.doctrine.orm.default_entity_manager.inner"
- '%photo_directory_absolute%'
So for example Im passing value '%photo_directory_absolute%'
This is part of decorator:
namespace App\Decorator;
class EntityManager extends EntityManagerDecorator
{
public $photoDir;
public function __construct(EntityManagerInterface $wrapped, string $photoDir)
{
parent::__construct($wrapped);
$this->photoDir = $photoDir;
}
Then I want to get this 'photoDir' value from Hydrator
namespace App\Hydrator;
class UserAppHydrator extends ObjectHydrator
{
protected function hydrateRowData(array $data, array &$result)
{
$hydrated_result = array();
parent::hydrateRowData($data, $hydrated_result);
die(var_dump($this->_em->photoDir));
And this shows me an error :
"Notice: Undefined property: Doctrine\\ORM\\EntityManager::$photoDir"
What I am missing? Thanks
Solution 1:[1]
You have to override the method newHydrator
of the EntityManagerDecorator
to get your EntityManager
injected into a Hydrator
. If that is missing, the $wrapped
instance will be used.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Powerhamster |