Chyba v komponentě při funkci render

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

Zdravím,

Potřeboval bych poradit s jednou věcí. Mám komponentu co vytváří tabulku s daty. Na pravé straně je edit a mazání. Mazání mám vyřešené ale edit dělá chybu. Šablona vypadá takto:

{foreach $classbook as $cbook}

        <tr n:class="$iterator->isOdd() ? 'a' : 'alternate-row' ">
            <td>{$cbook->date|date:'y-m-d'}</td>
            <td>{$cbook->lesson->howlong}</td>
            <td>{$cbook->plan}</td>
            <td>{$cbook->activity}</td>
            <td>{$cbook->homework}</td>
            <td>{$cbook->note}</td>
            <td class="action"><a href="{plink Classbook:editLessonPart $cbook->id}">editovat</td>
            <td class="action"><a n:href="deleteLesson! $cbook->id">vymazat</td>

	</tr>
    {/foreach}

U Edit potřebuji odkázat s parametrem na jiný presenter, v presenteru zavolám funkci:

public function actionEditLessonPart($id){

        return $id;
    }

Když najedu na odkaz edit tak url je taková jakou potřebuji ale po potvrzení mi laděnka hodí chybu, že nemůže najít componentu která je v layoutu a je připravena basePresenteru a to stím vubec nesouvisí…

Když odstraním funkci actionEditLessonPart tak laděnka nehlasí chybu v basepresenteru a layoutu ale že nemá komu předat parametr.

Nevíte proč díky tomu render nebo action se jakoby úplně vypne basePresenter?
Děkuji moc za odpověď

jtousek
Člen | 951
+
0
-

Ne nevypne. Celé to hlášení je trochu zmatené (imho). V layoutu máš metodu createComponentNěco ale poděděný presenter tuto komponentu neumí vytvořit nebo co?

Když sem hodíš tu laděnku bude to hned jasnější.

sppilka
Člen | 37
+
0
-

No v Layoutu mam normálně {form selectForm} ten je definován správně v BasePresenteru… Problém je, že jakmile do ClassbookPresenteru přidám funkci actionEditLessonPart která by si měla vzít parametr od toho odkazu v té komponěntě co jsem výše uvedl, tak landěnka hodí chybu:

<?php Nette\Latte\Macros\FormMacros::renderFormBegin($form = $_form = $_control["selectForm"], array()) ;if (is_object($form)) $_ctrl = $form; else $_ctrl = $_control->getComponent($form); if ($_ctrl instanceof Nette\Application\UI\IRenderable) $_ctrl->validateControl(); $_ctrl->render('errors') ?>

Jakož to chyba že chybí komponenta s jménem selectForm… a ta přitom je v pořádku. Protože když vymažu tu funkci action… tak to chybu nehodí, ale odkaz nemůže předat parametr a ani se to neuskuteční.

Kdyby si potřeboval více z laděnky tak řekni ale je to jen tento řádek

jtousek
Člen | 951
+
0
-

Sorry, vůbec netuším od čeho se odpíchnout. :-) Možná je jen pozdě a měl bych jít spát. :-D

Co takhle text výjimky když nic jiného? Po začátečníkovi klikatelnou html laděnku chtít asi nemohu, ale aspoň co to hlásí. ;-) (Myslím ten velký bílý text na červeném podkladu. :-P)

sppilka
Člen | 37
+
0
-

No zrovna začátečník nejsem, teda ne v php, ale prostě tuhle chybu mi hlava nebere…

Jak jsem říkal laděnka hlásí Component with name ‚selectForm‘ does not exist.

Ale zase na druhou stranu to prostě chybu nehlásí když přepnu na jinou funkci. A další věc je že když vymažu ten form v layoutu tak to narazí na jinou chybu z layoutu, a to že nezná funkci z toho Basepresenteru… je to nějaké divné…

Odkaz v šabloně na jiný presenter mám ok, ovšem jak by si přijal v tom presenteru kam odkazuji ten parametr? jakou funkcí?

jtousek
Člen | 951
+
0
-

V PHP možná ne, ale v Nette ano (podle počtu příspěvků na fóru).

Jsi si jistý, že daný presenter opravdu dědí od BasePresenteru a ne třeba od Nette\Application\UI\Presenter?

sppilka
Člen | 37
+
0
-

Ouuu tak to je mazec, no příště se mi to už nestane, kopíroval sem a kopíroval a měl si pravdu měl sem tam vynecháno extend SecurePresenter…

Hele díky moc, přístě budu zase chytřejší…