Component with name ‚Homepage‘ does not exist

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

Zdravim, mám drobný problém mám ajaxovou editaci tabulky a po uložení potřebuji aby jen ajaxove updatnul ten seznam ne naloudoval celou stránku takže po uloženi mám v samostatné komponentě redirect na domací presenter v kterém vytvářim jen instanci te dané komponenty.

$this->redirect('Homepage:edit',$this->id);

a vyhodí to hlašku Component with name ‚Homepage‘ does not exist !

jak se dostanu z komponenty na presenter v kterém tu komponentu volám?? nechci jen přesměrovani na ‚this‘!to funguje ale chci přesměrovat na presenter:akce,parametr což nejde nevím proč?

diky za rady

Oli
Člen | 1215
+
0
-

Protože se to snažíš volat/hledat v komponentě. Spravne

$this->presenter->redirect();
marcelxy
Člen | 70
+
0
-

Jo diky moc, to funguje ale stejně jsem nedosáhnul toho co jsem chtěl, já bych potřeboval pouze updatovat seznam po uloženi a poslat snippet toho seznamu nic víc! po tomto přesměrovaní chce asi zese vykreslit celou šablonu tekže mu chybí zas všechny proměnné které má v renderDefault ale já chci updatovat jen snippet ne kreslit celou šablonu je to ajax.

$this->presenter->redirect('Homepage:edit',$this->id);

ten :edit je handleEdit ne actionEdit Neví někdo co stím??

Oli
Člen | 1215
+
0
-

Aha, no tak tam se potom vubec nepouziva redirect. Četl jsi vubec dokumentaci? Když chceš použít AJAX, tak tam je sekce AJAX. To by mohlo odpovídat dotazu, ne? ;-)

Správně to má být ale:

$this->redrawControl('snippet-ktery-chces-prekreslit');
marcelxy
Člen | 70
+
0
-

No to samozdřejmě vím a to právě řeším že když mám samostatnou komponentu a vni po odeslaní formu uložím data,tak jak docílit toho aby po uložení dat už nic neudělal a jen se vrátil spět do presenteru na hendleEdit
kde už má vše co potřebuje k update seznamu ajaxem včetně

$this->redrawControl('meho snippetu');

problém je vtom že když uloží data automaticky mi načte celou stránku znovu aniž by ho zajímalo že se jedná o ajax!
jinak samozdřejmě ajax mi funguje, před odesláním formuláře vše pracuje správně!

Oli
Člen | 1215
+
0
-

marcelxy: Jestli to tak máš, tak se omlouvám. Jen pro ujasnění, máš tam něco jako?:

if($this->presenter->isAjax())
{
	$this->redrawControl('meho-snippetu'); // Pokud máš snippety v presenteru tak $this->presenter->...
} else
{
	$this->presenter->redirect('Homepage:edit',$this->id);
}

Protože jinak se ten redirect provede vždy. Případně pošli nějakej větší kus kodu, protoze mě takhle nenapadá, co by to mohlo jinýho způsobovat.

Šaman
Člen | 2666
+
0
-

Spíš mi to připadá, že se ti neodesílá ajaxově ten formulář. Takže se dostaneš při zpracování na ten mezikrok s nehezkou adresou,m odkud už by se redirectovat mělo.

marcelxy
Člen | 70
+
0
-

Oli napsal(a):

marcelxy: Jestli to tak máš, tak se omlouvám. Jen pro ujasnění, máš tam něco jako?:

if($this->presenter->isAjax())
{
	$this->redrawControl('meho-snippetu'); // Pokud máš snippety v presenteru tak $this->presenter->...
} else
{
	$this->presenter->redirect('Homepage:edit',$this->id);
}

Protože jinak se ten redirect provede vždy. Případně pošli nějakej větší kus kodu, protoze mě takhle nenapadá, co by to mohlo jinýho způsobovat.

ano takhle podobně to mám v presenteru v metodě hendleEdit která která umí updatovat seznam a taky vytvořit instanci toho edit form a ajaxově to poslat spět

public function handleEdit($id)
    {

   $this->id = $id;
   $this->row = $this->id;
   $this->formEdit = $this->getComponent('formEdit');
   $this->redrawControl('list') ;

     }

 public function createComponentFormEdit() {
$form =  new form($this->conect);
$form->setDefaults($this->id);
return $form;
}

až doposut to funguje v pořádku i ajaxově ta komponenta je v samostatné třídě a je vní i uložení dat takže po odeslaní a uložení dat z toho formu mi pořád chce načítat znovu celou stránku a nejsem schopen ho přimět aby provedl znovu jen hendleEdit($id) v presenteru nic vic!
Myslím že mám asi problém že ten formulář se mi neodesílá ajaxově! ale ted nevím jak toho dosáhnou odeslání formu ajaxově??

Editoval marcelxy (2. 6. 2014 6:08)

Šaman
Člen | 2666
+
0
-

Zkus tohle, víc ti teď neporadím, nějakou dobu už jsem ajaxové formuláře nedělal.

marcelxy
Člen | 70
+
0
-

OMLOUVÁM SE VŠEM! za zdržování ja id… neměl ve formu třídu ajax proto se to neodesílalo ajaxově a pak chtělo nečítat celou stránku znovu! už sem to vyřešil vše funguje jak má díky za trpělivost!

Editoval marcelxy (2. 6. 2014 7:10)