V presenteru nefunguje přijetí ajaxově odeslaného pole
- jandik.n
- Člen | 41
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
uprav to na
public function handleRenderTranslators($source_language_id, array $target_languages_id)