Pouzivani formulare v komponente

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

Ahoj, delam s nette tyden a narazil jsem na jeden problemek. Nevim jestli to delam spatne. Mam komponentu, kterou si nacitam do presenteru. Komponenta se sklada z php a latte. Komponentu v pohode nactu. Ted bych chtel do teto komponenty pridelat admin funkcionalitu na editaci jejich prvku. No a v teto komponente jsem si chtel vytvorit formular. Vyhazuje mi to chybu: Component with name ‚editItemsForm‘ does not exist.

Muzu se zeptat co delam spatne? diky moc

Takze HomepagePresenter si nacita komponentu v latte sablone pomoci:

...
{control mojeKomponenta}
...

tim se mi v HomepagePresenteru zavola:

...
protected function createComponentMojeKomponenta(){
	return new \MojeKomponenta($this->mojeKomponentaRepository, true);
}
...

tim se mi vytvori komponenta:

...
public function __construct(MojeKomponentaRepository $mojeKomponentaRepository, $isAdmin) {
  parent::__construct();
  $this->mojeKomponentaRepository= $mojeKomponentaRepository;
  $this->isAdmin = $isAdmin;
}


public function createComponenEditItemsForm(){
  $this->adminForm = new Form();
  $this->adminForm->onSuccess[] = $this->saveItemsFormSucceeded;
  //... kod komponenty
  return $this->adminForm;
}
...

v sablone komponenty volam vytvoreni formulare:

...
{if $isAdmin}
{control editItemsForm}{/block}
{/if}
...

Editoval dawe (22. 5. 2014 21:39)

greeny
Člen | 405
+
0
-

Máš tam typo:
createComponenEditItemsForm()
VS
createComponentEditItemsForm()

dawe
Člen | 59
+
0
-

ouuu diky moc, asi bych si mel dat prestavku :)

dawe
Člen | 59
+
0
-

Jeste bych mel jeden dotaz. Kdyz vytavrim komponentu v sablone presenteru, tak si predavam v jakem jazyce se ma zobrazit:

...
{control mojeKomponenta "cz"}
{control mojeKomponenta "en"}
...

to se mi pak predava do komponenty

...
public function render($language, ){
	$this->language = $language;
...

ale ten jazyk nemam k dispozici v dobe, kdy vytvarim ten formular

...
public function createComponentEditItemsForm(){
...

pouzivam tu komponentu v presenteru 2×, protoze musi byt na strance zobrazeny obe jazykove mutace

edit: ted jsem zjistil, ze se vola vytvoreni instance te komponenty pouze jednou, jen se dvakrat vola ta metoda render. Jak bych tohle mel nejlepe vyresit? abych vypsal texty v anglictine a cestine pres tuto komponentu?

edit: vyresil jsem to tak, ze jsem si vytvoril dve metody pro dva jazyky. Takze na urovni sablony zjistim jazyk a podle toho zavolam En metodu nebo Cz metodu. Neprijde mi to tedy idealni :( .. ale nevim jak to jinak vyresit. Jak tu komponentu udelat aby dokazala pracovat s vicero jazyky?

Editoval dawe (22. 5. 2014 22:46)

David Matějka
Moderator | 6445
+
0
-

mozna hledas multiplier

dawe
Člen | 59
+
0
-

to vypada fajn, diky moc :)