V presenteru nefunguje přijetí ajaxově odeslaného pole

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

Ahoj, mám následující ajaxové zpracování kliknutí na checkboxlist „.target_language“, kde v „data“ chci odeslat zaškrtnutý radiolist a zaškrtnuté checkboxy uložené v poli:

<script>
    $(function(){
        $('.target_language').change(function(){
            var target_languages = new Array();
            $(".target_language:checked").each(function(i) {
            	target_languages.push($(this).val());
            });
            $.nette.ajax({
                type: 'GET',
                url: {link renderTranslators!},
                data: {
                    'source_language_id': $("input:radio[name=source_language]:checked").val(),
                    'target_languages_id': target_languages
                }
            });
        });
    });
</script>

Zpracování v Presenteru je následující:

<?php
public function handleRenderTranslators($source_language_id, $target_languages_id) {
        $this->potentialTranslators = $this->languageModel=>getLanguagesForNewProject3($target_languages_id);
        $this->template->source_language_id = $source_language_id;
        if (!$this->isAjax()) {
            $this->redirect('this');
        } else {
            $this->redrawControl('selected_translators');
        }
    }
?>

Nechce mi to vzít druhý parametr jako pole.

Parametry v konzoli:
do renderTranslators
source_language_id 2
target_languages_id[] 31

Odezva:
exception ‚Nette\Application\BadRequestException‘ with message ‚Invalid value for parameter 'target_languages_id‘ in method App\ISModule\Presenters\ProjectPresenter::handleRenderTranslators(), expected scalar.' in C:\xampp\htdocs\nk\vendor\nette\application\src\Application\UI\PresenterComponentReflection.php:128

Chyba nenastane, pokud pole odešlu takto:
‚target_languages_id‘: $(„.target_language:checked“).serialize()

Ale odeslaný parametr je následující, což asi není správně:
target_languages_id target_language%5B%5D=2

Věděl by někdo, jak správně pole odeslat? Nebo spíše jak jej správně přijmout v Presenteru – myslím, že v prvním případě jej odesílám správně. Pak jej posílám do modelu na dotaz do DB (zde když natvrdo nastavím pole s nějakými hodnotami, tak to taky jede správně).

Díky!

David Matějka
Moderator | 6445
+
+1
-

uprav to na

public function handleRenderTranslators($source_language_id, array $target_languages_id)
jandik.n
Člen | 41
+
0
-

Tak málo a přitom tak moc :-)

Díky, Matěji!