$ composer require zenify/doctrine-methods-hydrator
Register the extension in config.neon
:
extensions:
- Zenify\DoctrineMethodsHydrator\DI\MethodsHydratorExtension
# Kdyby\Doctrine or another Doctrine to Nette implementation
The 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
}
}