Předání parametru továrničce

- ondrakrajcik
 - Člen | 45
 
Mám třídu pro vytváření Formuláře
<?php
namespace App;
use Nette, Model;
classMyForm extends Nette\Application\UI\Form{
    public $MyRespository;
    public $parametr;
    public function __construct(\App\Model\Respositories\MyRespository $MyRespository, $parametr){
        parent::__construct();
        $this->MyRespository= $MyRespository;
        $this->buildForm();
	$this->parametr = parametr;
    }
    /** @return Form */
    private function buildForm() {
	...
        $this->addText("nick","nick");
	...
    }
    public function MyFormSubmitted(MyForm $form){
        ...
    }
}
interface IAddMyFormFactory{
    /** @return AddMyForm */
    public function create($parametr);// odtud se vola konstruktor ve kterem uz je jeden parametr a hlasi me to chybu
}
a presenter
    protected function createComponentMyForm() {
	$parametr = 1;
        return $this->MyFormFactory->create($parametr);
    }
Můžete mně poradit jak předat továrničce parametr? Nijak mně to nefunguje

- Jiří Nápravník
 - Člen | 710
 
To nejdulezitejsi – neon – jsi vynechal. Mělo by to být nějak takto:
	-
		implement: App\IAddMyFormFactory
		class: App\AddMyForm
		parameters: [parametr]
		arguments: [%parametr%]
a poto mv konstruktoru AddMyForm, ten $parametr přesunout na začátek, a až ty DI věci za to

- ondrakrajcik
 - Člen | 45
 
Jiří Nápravník napsal(a):
To nejdulezitejsi – neon – jsi vynechal. Mělo by to být nějak takto:
- implement: App\IAddMyFormFactory class: App\AddMyForm parameters: [parametr] arguments: [%parametr%]a poto mv konstruktoru AddMyForm, ten $parametr přesunout na začátek, a až ty DI věci za to
Teď nevím jak upravit ten config.neon
Mám to v services a nevím jak to uspořádat
services:
	- App\IAddMyFormFactory
	parameters: [parametr]
	router: @App\RouterFactory::createRouter
	authenticator: Authenticator
takto to vyhazuje opět chybu
Editoval ondrakrajcik (16. 3. 2014 13:04)

- ondrakrajcik
 - Člen | 45
 
Šaman napsal(a):
Tu pomlčku dej o řádek výš a celý blok ohledně služby pak odsaď. Místo té pomlčky si můžeš představit nějaký název, jen to pojmenování není nutné, proto se zahrazuje pomlčkou.
services:
    -
        App\IAddMyFormFactory
        parameters: [parametr]
    router: @App\RouterFactory::createRouter
    authenticator: Authenticator
Takto to bohužel taky nefunguje
Editoval ondrakrajcik (16. 3. 2014 15:21)

- Šaman
 - Člen | 2668
 
Vždyť ti to psal @Jiří Nápravník, co ti na tom nefunguje? Řádek class můžeš vynechat, když máš uvedenou @return anotaci u metody create(). A v konstruktoru dej $parametr jako první argument.
-
    implement: App\IAddMyFormFactory
    parameters: [parametr]
    arguments: [%parametr%]
					Editoval Šaman (16. 3. 2014 15:57)

- Jiří Nápravník
 - Člen | 710
 
Šaman napsal(a):
Řádek class můžeš vynechat, když máš uvedenou @return anotaci u metody create().
Není to v masteru jen? mám Nette 2.1 a dostanu pokdu class neuvedu a mam to jen v return anotaci: Service ‚124‘: Expected class, method or property, NULL given
Editoval Jiří Nápravník (17. 3. 2014 12:09)