Ako predat v extension parameter pre factory create()?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- duskohu
- Člen | 778
Caute predstavte si klasicky navrh:
class BlockControl extends Control
{
private $slug;
private $httpRequest;
public function __construct($slug, IRequest $httpRequest)
{
parent::__construct();
$this->slug = $slug;
$this->httpRequest = $httpRequest;
}
}
interface IBlockControl
{
/**
* @param string $slug
* @return BlockControl
*/
public function create($slug);
}
v neone:
factories:
blockControl:
create: BlockControl(%slug%)
implement: IBlockControl
parameters: [slug]
v presentri si injectnem a v create component pouzijem:
$blockControl->create('my-slug');
ale ako mam predavat parameter $slug ked blockControl vytvaram v extension:
$builder->addDefinition($this->prefix('blockControl'))
->setImplement('IBlockControl')
->setFactory('BlockControl');
- David Matějka
- Moderator | 6445
$builder->addDefinition($this->prefix('blockControl'))
->setImplement('IBlockControl')
->setFactory('BlockControl')
->setParameters(array('slug'))
->setArguments(array(new \Nette\PhpGenerator\PhpLiteral('$slug'))
->setAutowired(TRUE);
Editoval matej21 (13. 1. 2014 23:15)
- Filip Procházka
- Moderator | 4668
Parametry továrničky se umisťují pomocí %
$builder->addDefinition($this->prefix('blockControl'))
->setImplement('IBlockControl')
->setFactory('BlockControl')
->setParameters(array('slug'))
->setArguments(array('%slug%'))
->setAutowired(TRUE);