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