Ajax vykonani action nefunguje

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

Mam takovy problem a nechapu proc mi nefunguje metoda action, nevite nekdo kde by mohla byt chyba, uz jsem zkusil snad vse co me napadlo? Metoda vloz mi funguje bez problemu.

presenter

<?php
    public function renderVloz($strankaID) {
        $stranka = new Admin_StrankyModels();
        if ($this->isAjax()) {
            $this->invalidateControl('list'); }

        $this->template->stranky = $stranka->vypisStranky($strankaID);
        $this->template->zpet = $stranka->vypisStrankyZpet($strankaID)->fetch();
        $this->template->rodic = '0';
    }

    public function actionVlozRodicID($rodicID) {
        $stranka = new Admin_StrankyModels();
        if ($this->isAjax()) {
            $this->validateControl();
            $this->invalidateControl('list');
        }
        else
            $this->redirect(':Admin:Stranky:vloz',1);

       $this->template->rodic = '30';
        //$this->template->rodic = $stranka->vypisStrankyZpet(30)->fetch();

    }
?>

template

<?php
{snippet list}
    <table class="listing" cellpadding="0" cellspacing="0" style="border: 0;">
    <tr>
            <th class="first"><a href="{link :Admin:Stranky:vloz, $zpet->id}" class="ajax">Zpět</a></th>
            <th class="last">Vyberte</th>
    </tr>
    {foreach $stranky as $stranka}
        <tr>
            <td class="first style1"><a href="{link :Admin:Stranky:vloz, $stranka->id}" class="ajax">{$stranka->nazev}</a></td>
            <td><a href="{link :Admin:Stranky:vlozRodicID, $stranka->id}" class="ajax"><img src="/images/admin/add-icon.gif" width="16" height="16" alt="" /></a></td>

        </tr>
    {/foreach}
    </table>
    <p>{$rodic}</p>
{/snippet}
?>
Mikulas Dite
Člen | 756
+
0
-

Nepoužíváš v tomto případě Nette správně. Nastuduj co to jsou signály: http://zdrojak.root.cz/…refactoring/, https://doc.nette.org/…n/presenters.

A předpokládám, že šablonu nemáš obalenou <?php ?>. Mrkni také na https://forum.nette.org/…v-tomto-foru#…

Edit: očividně jsem ti nerozumněl, co to vlastně má dělat. Pokud ta metoda actionVlozRodicID něco ukládá (jak invokuje název) tak použí signály. Jinak nevím, co zamýšlíš.

Editoval Mikulas Dite (11. 11. 2010 19:32)

saimons
Člen | 293
+
0
-

Moje puvodni myslena byla takova, ze pomoci function renderVloz prochazim strukturu a pak mam tlacitko, kterym chci vlozit do komponenty formulare $form->addHidden(‚rodicID‘); to idecko toho konkretniho prvku. K tomu me mela slouzit metoda function actionVlozRodicID. Nejak takto jsem to myslel:

<?php
    public function actionVlozRodicID($rodicID) {
         $stranka = new Admin_StrankyModels();
        if ($this->isAjax()) {
	    	$this->invalidateControl('strankaForm');
		$this['strankaForm']['rodicID']->value = $rodicID;
             }
    }
?>
<?php
{snippet strankaForm}
    {widget strankaForm}
{/snippet}

?>
saimons
Člen | 293
+
0
-

Pokud jsem pouzil handle tak to uz funguje, jen je problem ze pokud mam ve formulari neco vyplneneho tak se ti tim invalidate premaze, pokud bych to nechtel tak to musis asi resit cele na strane JS?