$ composer require zenify/doctrine-methods-hydratorRegister the extension in config.neon:
extensions:
- Zenify\DoctrineMethodsHydrator\DI\MethodsHydratorExtension
# Kdyby\Doctrine or another Doctrine to Nette implementationThe goal of this extension is to enhance native tryCall method of Control to hydrate parameters of called methods.
All render*, action* and handle* methods are hydrated, if entity class typehint is present if args definition.
Use in presenter looks like this:
class Presenter extends Nette\Application\UI\Presenter
{
/**
* @inject
* @var Zenify\DoctrineMethodsHydrator\Contract\MethodsHydratorInterface
*/
public $methodsHydrator;
/**
* @param string $method
* @param array $parameters
* @return bool
*/
protected function tryCall($method, array $parameters)
{
return $this->methodsHydrator->hydrate($method, $parameters, $this);
}
}For Control, you can use constructor or @inject with help of DecoratorExtension.
In template
<a n:href="Product:detail, product => $product->getId()">Product detail</a>In presenter
class SomePresenter extends Presenter
{
public function actionDetail(App\Entities\Product $product)
{
dump($product); // "App\Entities\Product" object
}
}