Ako zaregistrovat control v extension

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
duskohu
Člen | 778
+
0
-

Caute neviete ma nasmerovat neviem co robim zle:
mam control:

class ItemsPerPage extends Control
{
	......

	public function __construct(Request $httpRequest, Response $httpResponse)
	{
		parent::__construct();
		$this->httpRequest = $httpRequest;
		$this->httpResponse = $httpResponse;
	}

	.....
}

potom extension:

class ItemsPerPageExtension extends CompilerExtension
{
	....

	public function loadConfiguration()
	{
		$config = $this->getConfig($this->defaults);

		$builder = $this->getContainerBuilder();

		$builder->addDefinition($this->prefix('itemsPerPage'))
			->setFactory('NasExt\Controls\ItemsPerPage');
	}

	....

}

predpokladam ze som si vyrobil factory ItemsPerPage, dalej by som si ju chcel injectnut do presentra a pouzivat:

private $itemsPerPage;

public function injectItemsPerPage(ItemsPerPage $itemsPerPage)
{
	$this->itemsPerPage= $itemsPerPage;
}


createComponentIpp(){
	$control = $this->itemsPerPage;
	......
	return $control;

}

co je na tomto navrhu zle? lebo ladenka mi nadava:

Component name must be integer or string, NULL given

Neviete mi poradit ako to riesit? Dakujem.

honos
Člen | 109
+
0
-

Je to hezke reseni ale proc to provadis jako extension? Podle me si zbytecne ‚zamorujes‘ aplikaci.
Proc ji nevytvaris normalne pres new ItemsPerPage($this->context->httpRequest, $this->context->httpResponse); ?

duskohu
Člen | 778
+
0
-

Zamorujem? :-) "ItemsPerPage ":https://github.com/…/en/index.md Robim to preto lebo si len injectnes sluzbu a pouzivas a sluzba pozaduje len to co potrebuje ostatne si zabespeci sama DI, dalsia vec mozes si nakonfigurovat defaultne sluzbu v neone.

enumag
Člen | 2118
+
0
-

@duskohu: Huh? Zrovna u tebe bych očekával, že víš že službou nikdy nemá být samotná komponenta, ale továrna na tu komponentu.´Navíc v tom extension co odkazuješ to tak máš. Nechtěls náhodou injectnout ItemsPerPageFactory?

Editoval enumag (13. 1. 2014 22:22)

duskohu
Člen | 778
+
0
-

@enumag ItemsPerPageFactory pouzivam, takze je to ok :-)