payload se mi odešle v 0.9.1, ale už ne v 0.9.2

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

Ahoj,

používám ui sortable a posílám si do presenteru v poli nové pořadí, tam to zpracuju a odesílám payload, aby se mi to taky změnilo ve skrytém inputu ve formuláři.

Kód je následující:

<script>
    $(function() {
        $("#sortable").sortable({
            placeholder: 'highlight',

            update: function() {
                var listOrder = $(this).sortable("serialize");
                $.post('<?php echo $presenter->link("Library:reorder")?>', listOrder, function(payload){

                    if (payload.images) {
                      $('[name=images]').val(payload.images);
                    }
                });
            }
        });

        $("#sortable").disableSelection();
    });
</script>
<?php
public function actionReorder()
{
    $session = Environment::getSession();
    $namespace = $session->getNamespace('imagesSelected');

    $post = $this->presenter->request->post;

    $namespace['line'] = implode(',',$post['item']);

    $this->payload->images = $namespace['line'];

    $this->terminate();

}
?>

Aktualizoval jsem si Nette z 0.9.1 na 0.9.2 a kód mi přestal fungovat (payload se z presenteru zřejmě neodešle). Kde je chybka?

Díky za radu!

Editoval ondrique (19. 11. 2009 15:22)

Honza Kuchař
Člen | 1662
+
0
-

https://api.nette.org/…ter.php.html#692

Pokud zavoláš terminate() skript se ukončí. Pokud chceš odeslat výstup, musíš mu předat response. Případně ho nechat doběhnout…

ondrique
Člen | 16
+
0
-

Díky,
nakonec jsem ještě proštrachal Davidův příklad z VŠB a vyřešil to

<?php
$this->sendPayload();
?>

Editoval ondrique (19. 11. 2009 21:55)

Honza Kuchař
Člen | 1662
+
0
-

Jee, vidíš, to se mi teď bude hodit. Nevěděl jsem, že nějaká taková metoda je. (Nette se teď mění hodně rychle, až skoro k nepoznání)

Editoval honzakuchar (19. 11. 2009 22:33)

David Grudl
Nette Core | 8142
+
0
-

Zavolat $this->sendPayload() je nejjistější způsob, sice terminate() by mělo fungovat, ale nejspíš je tam chybka.