Ron
Ron

Reputation: 23466

Zend Framework 2 - Hydrator strategy not responding and hydrating

I implemented basically this strategy.

The main difference is (I guess) that I use Doctrine2.

The constructor class is called (a test echo is printed) but the two functions extract() and hydrate() are not.

I added the strategy as follows:

$hydrator = new DoctrineEntity($entityManager);
$hydrator->getHydrator()->addStrategy('my_attribute', new MyHydrationStrategy());
$form->setHydrator($hydrator);

A kind-of similar issue was posted here.

Maybe the problem is in the way how I add this strategy. But I honestly don't know...

Would be great if somebody could give me a hint what I'm doing wrong.

Upvotes: 0

Views: 3630

Answers (2)

Sam
Sam

Reputation: 16455

Please refer to this post, for a cleaner and more appropriate solution!

Zend Framework 2 - Hydrator strategy for Doctrine relationship not working

Upvotes: 1

Ron
Ron

Reputation: 23466

@Sam solved this problem on GitHub.

This is a problem that is commonly happening currently. The thing is: addStrategy() is a thing of ZF2's ClassMethodHydrator - this hydrator is used silently within DoctrineEntity. To add custom Strategies, simply do not use DoctrineEntity but use ClassMethodsHydrator itself. On ClassMethods then you'll be able to add Strategies

You may also take a look at this Issue/PR doctrine/DoctrineModule#106

My code now looks like this:

$hydrator = new ClassMethodsHydrator();
$hydrator->addStrategy('my_attribute', new MyHydrationStrategy());
$form->setHydrator($hydrator);

BTW: The underscore in the attribute doesn't cause any problems

Unfortunately I stumbled upon another foreign-key-relation-based issue, it seems even a Doctrine issue. But I'll open a new question for this.

Upvotes: 0

Related Questions