handle vraci celou stranku misto payload
- libik
- Člen | 96
Mam v sablone:
function refillForm(link, formid, errors, getparams)
{
$.ajax ({
type: "GET",
url: link,
dataType: 'json',
async: false,
data: getparams,
success: function(payload) {
if(payload.modal == true)
{
$('#formModal').html(payload.tpl).modal('show');
$('#formModal form').each(function() {
Nette.initForm(this);
});
$.nette.load();
}
// var e= {$form->errors|implode:','};
err = errors.split(',');
$('.form-error').removeClass('hide');
$.each(err, function(index, value) {
var div = $('#'+formid+value).closest('div[class="control-group"]');
div.addClass('error');
$('#formModal form').each(function() {
Nette.initForm(this);
});
});
},
error: function(jqXHR, status, error) {
}
})
}
a handler:
public function handleEditForm($id)
{
if ($this->isAjax())
{
$tpl = $this->template->setFile(__DIR__ . '/../templates/Creatives/form.latte');
$this->creativeRecord = $this->creatives->find($id);
....
$this->template->title = 'Upravit '. HTML::el('span', $this->creativeRecord->name)->setClass('text-info');
$this->payload->tpl = (string) $tpl;
$this->payload->modal = true;
$this->redrawControl();
}
}
V Nette 2.1.1 mi ajax vracel json, v nette 2.2.3 mi vrati celou stranku :( A nevim co s tim.
- nanuqcz
- Člen | 822
Ahoj,
- Metoda
redrawControl()
slouží k invalidaci komponenty, nebo snippetů. Po takovéto invalidaci se pak všechny tyto invalidované komponenty odešlou jako obsah proměnné$this->payload->snippets
na výstup. Ve tvém případě pravděpodobně invaliduješ celý presenter, a tak se ti na výstup posílá celá šablona. Praxe je taková, že pokud používáš v šablonách snippety, použij v presenteru metoduredrawControl('nazev_snippetu')
. - Pokud chceš ale plnit
$this->payload
ručně (což je tvůj případ), používá se k jeho odeslání metodasendPayload()
.
Závěr: Nahraď $this->redrawControl();
za
$this->sendPayload();
a mělo by to dělat, co očekáváš.
- libik
- Člen | 96
Ahoj,
diky za odpoved. Nicmene nefunguje mi to ani se sendPayload, ktery jsem jiz zkousel. Ale vitr vane asi malinko odjinud, kdyz se podivam ve firebugu na parametry ajax dotazu, je tam jedno do navic (to creativeForm-submit).
_submit Odeslat
active on
active_from
active_from_picker
active_to
active_to_picker
do addForm
do creativeForm-submit
id
link_type nolink
name
notValid 1
url
Mozna to ma souvislost s tim, ze je parametr do v teto verzi Nette uz v POSTu. Jdu teda patrat…
- libik
- Člen | 96
Tak jsem na to asi prisel.
Formular slouzi k uploadu souboru a po vlastni validaci ho znovu po reloadu stranky nacitam a plnim daty z $getPost = $this->httpRequest->getPost();
V teto verzi Nette se tam objevil i parametr do=creativeForm-submit, ktery
to zpusoboval.
Nicmene nahradim redrawControl() za sendPayload() i tak.