Zmeny v snippetoch (aký majú vplyv na ich používanie oproti starým)

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

Zdravím,

chcel by som sa opýtať aký majú vplyv nové snippety a ako ich používať? Úplne rovnako ako tie staré? Zmenilo sa aj niečo v ich ajaxovaní? Lebo pre Ajax requesty mi to nevracia správny json formát ale niečo takéto:

<?php
<div>
    <div id="ewAdminMenu">
        <ul>
            <li>
                <a href="/kostol/www/?do=eventViewer-add" class="ajax">Pridať</a>
            </li>
        </ul>
    </div>

<div id="snippet-eventViewer-eventFlashes"></div>
<div id="snippet-eventViewer-addForm"><form action="/kostol/www/?do=eventViewer-eventAddForm-submit" method="post" id="frm-eventViewer-eventAddForm" class="ajax">

<table>
<tr class="required">
    <th><label class="required" for="frmeventAddForm-title">Názov</label></th>

    <td><input type="text" class="text" name="title" id="frmeventAddForm-title" required="required" data-nette-rules="{op:':filled',msg:&quot;N\u00e1zov mus\u00ed by\u0165 vyplnen\u00fd.&quot;},{op:':filled',rules:[{op:':maxLength',msg:&quot;N\u00e1zov nesmie by\u0165 dlh\u0161\u00ed ako 100 znakov.&quot;,arg:100},{op:':minLength',msg:&quot;N\u00e1zov nesmie byt krat\u0161\u00ed ako 5 znakov.&quot;,arg:5}],control:'title'}" value="" /></td>
</tr>

<tr class="required">
    <th><label class="required" for="frmeventAddForm-date">Dátum a čas</label></th>

    <td><input type="text" class="dateTimePicker" name="date" id="frmeventAddForm-date" required="required" data-nette-rules="{op:':filled',msg:&quot;D\u00e1tum a \u010das mus\u00ed by\u0165 vyplnen\u00fd!&quot;},{op:':filled',rules:[],control:'date'}" value="" /></td>
</tr>

<tr>
    <th>&nbsp;</th>

    <td><input type="checkbox" name="repeat" id="frmeventAddForm-repeat" /><label for="frmeventAddForm-repeat">Opakovať každý týždeň?</label></td>
</tr>

<tr class="required">
    <th><label class="required" for="frmeventAddForm-description">Popis</label></th>

    <td><textarea cols="40" rows="10" name="description" id="frmeventAddForm-description" required="required" data-nette-rules="{op:':filled',msg:&quot;Popis nesmie by\u0165 pr\u00e1zdny.&quot;},{op:':filled',rules:[{op:':minLength',msg:&quot;Popis nesmie by\u0165 krat\u0161\u00ed ako 5 znakov.&quot;,arg:5}],control:'description'}"></textarea></td>
</tr>

<tr>
    <th>&nbsp;</th>

    <td><input type="submit" class="button" name="eventAddFormSubmitOk" id="frmeventAddForm-eventAddFormSubmitOk" value="Pridaj" /></td>
</tr>
</table>

</form>
</div>
<div id="snippet-eventViewer-editForm"></div>
<div id="snippet-eventViewer-ewMainFrame">    <div class="main">
        <a href="/kostol/www/udalosti/skusobny-event">Skúšobný event</a>
        <a href="/kostol/www/?eventViewer-slug=skusobny-event&amp;do=eventViewer-edit" class="ajax">Uprav</a><br />
        <a href="/kostol/www/udalosti/2010-10-16-18-31skusobny-event">Skúšobný event</a>
        <a href="/kostol/www/?eventViewer-slug=2010-10-16-18-31skusobny-event&amp;do=eventViewer-edit" class="ajax">Uprav</a><br />
        <a href="/kostol/www/udalosti/2010-10-20-17-31-fero-ma-narodky">Fero ma narodky</a>
        <a href="/kostol/www/?eventViewer-slug=2010-10-20-17-31-fero-ma-narodky&amp;do=eventViewer-edit" class="ajax">Uprav</a><br />
        <a href="/kostol/www/udalosti/skusobny-event-opakovaci">Skúšobný event opakovací</a>
        <a href="/kostol/www/?eventViewer-slug=skusobny-event-opakovaci&amp;do=eventViewer-edit" class="ajax">Uprav</a><br />
    </div>
</div>
</div>{"state":[]}
?>

s týmto problémom sa už snažím bojovať pár dni no márne. Neviem ako to je možné, používam najnovšiu verziu Nette z git repozitára.

misiak
Člen | 28
+
0
-

Fakt nikto netuší čo s tým?

Mikulas Dite
Člen | 756
+
0
-

Nějaký json tam je: {"state":[]}. Pošli template, z toho bude problém jasnější.

misiak
Člen | 28
+
0
-
<?php

<div>
    {if $isAdmin}
    <div id="ewAdminMenu">
        <ul>
            <li>
                <a href="{link add!}" class="ajax">Pridať</a>
            </li>
        </ul>
    </div>
    {/if}

    {snippet eventFlashes}
    {foreach $flashes as $flash}
    <div id="flash" class="{$flash->type}">{$flash->message}</div>
    {/foreach}
    {/snippet}

    {snippet addForm}
    {if isset($showAddForm) && $showAddForm == true}
        {control eventAddForm}
    {/if}
    {/snippet}

    {snippet editForm}
    {if isset($showEditForm) && $showEditForm == true}
        {control eventEditForm}
    {/if}
    {/snippet}

    {snippet ewMainFrame}
    <div class="list">
        <h3>Najbližšie udalosti</h3>
        <div class="content-right-event">
        {if isset($events)}
        {foreach $events as $event}
            {if $iterator->isFirst()}
                {assign $day = $event->DAY, $month = $event->MONTH}
                <span>{$event->start|datetoeventformat|lower}</span>
                <p>
                    <a href="{$control->presenter->link('Events:event', $event->slug)}">{$event->title}</a>
            {/if}
            {if $day == $event->DAY && $month == $event->MONTH}
                    , <a href="{$control->presenter->link('Events:event', $event->slug)}">{$event->title}</a>
            {else}
                {assign $day = $event->DAY, $month = $event->MONTH}
                </p>
        </div>
        <div class="content-right-event">
                <span>{$event->start|datetoeventformat|lower}</span>
                <p>
                    <a href="{$control->presenter->link('Events:event', $event->slug)}">{$event->title}</a>
            {/if}
            {if $iterator->isLast()}
                </p>
        </div>
            {/if}
        {/foreach}

        <span class="link"><a href="{$control->presenter->link('Events:default')}">Prezrieť kalendár...</a></span>
        {else}
        <span>V databázi sa nenachádzajú žiadne udalosti.</span>
        {/if}

    </div>
    {/snippet}

</div>

?>

nepomohlo ani celé zaobalenie do snippetu, pokiaľ sa nemýlim, prestalo mi to fungovať na nových snippetoch (po update Nette). Ale asi to najskôr bude moja chyba.

Vyki
Člen | 388
+
0
-

Mrkni na https://forum.nette.org/…n-ve-verzi-2?…

Stáhni si Nette 2.0 alfa a dolň zavináče – to je poslední verze, kde snippety fungujou tak nějak v pohodě.

crempa
Člen | 198
+
0
-

Zdar, prepisuju projekt z cca rok stare verze nette do dvojky dev a po ajax requestu se me vraci komplet HTML bez znamek jsonu. Nejakej tip co by to mohlo zpusobovat ze zmen za posledni rok? Changelogy s forum jsem se snazil jakz takz projit, ale jsou toho tu desny kvanta.. :-)

Zavinace mam snad vsude, ale mam pocit ze se vubec neaktivuje ajax driver pro realizaci ajax odpovedi..

Diky

Aurielle
Člen | 1281
+
0
-

AJAXové snippety momentálně nejsou funkční, stáhni si 2.0-alpha, která ještě obsahuje staré (a funkční) snippety.

crempa
Člen | 198
+
0
-

Pouzivam prave alpha verzi takze tam snippety jdou. Ale problem jsem odhalil, takze pro pripadne budouci switchery:

Po vytvoreni nove komponenty je nutne ji rucne invalidovat. Nevim od kdy je to nutne ale drive to tak nebylo.

viz. examples:

<?php
	protected function createComponentFifteen()
	{
		$fifteen = new FifteenControl;
		$fifteen->onGameOver[] = callback($this, 'gameOver');
		$fifteen->invalidateControl(); //drive nebylo nutne
		return $fifteen;
	}
?>
Tharos
Člen | 1030
+
0
-

V Nette došlo nedávno k relativně tiché změně, kdy komponenta, která přijme signál, se nově automaticky neinvaliduje. Taky jsem nedávno strávil asi dvě hodiny blouděním…

David Grudl
Nette Core | 8218
+
0
-

Bylo to přesně 27.6.2009 ;-)