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);