Payload v beforeRender nefunguje při redrawControl
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Ripper
- Člen | 56
Zdravím,
doufám že jsem to v nadpisu vyjádřil alespoň trochu jasně. Mám následující funkci –
protected function beforeRender()
{
parent::beforeRender();
$messages = array();
// Put all flash messages into array
foreach ($this->getTemplate()->flashes as $flashMessage) {
$messages[] = array(
'text' => $flashMessage->message,
'type' => $flashMessage->type
);
}
// send paylod only if is ajax request
if ($this->isAjax()) {
$this->payload->messages = $messages;
}
}
Ovšem, pokud někde mám ajaxovou akci, volám redrawControl, tak se mi do jsonové odpovědi nedostane část messages. Respektive je prázdná.
Dělám něco špatně nebo to jednoduše nejde? Díky za odpověď.
- Tirus91
- Člen | 199
Jo, tak k tomuto problému se přidávám i já.
Já to mám trochu jinak.
v BasePresenteru beforeRender vypadá takto
protected function beforeRender() {
if ($this->isAjax()) {
$this->redrawControl('flash');
}
$this->template->receivedPM = 0;
if ($this->user->isLoggedIn()) {
$this->template->receivedPM = $this->pm->getCountOfNewReceivedMessage();
}
}
A u článků mazání komentářů takto
public function handleCommentDelete($commentId, $id, $title) {
if (!$this->user->isLoggedIn()) {
$this->redirect(':Front:Sign:in', array('backlink' => $this->storeRequest()));
}
if (!$this->user->isAllowed('Comment', 'delete')) {
$this->error($this->translator->translate('messages.error.sufficientPermissions'), \Nette\Http\IResponse::S403_FORBIDDEN);
}
$result = $this->comment->delete($commentId);
if (!$result) {
$this->flashMessage($this->translator->translate('article.error.deleteComment'), 'error');
} else {
$this->flashMessage($this->translator->translate('article.success.deleteComment'), 'success');
}
if ($this->isAjax()) {
$this->redrawControl('comments');
} else {
$this->redirect('Story:view#comments', $id, $title);
}
}
V odpovědi, mám snippet–coments, ale snippet–flash už nikoliv.
Editoval Tirus91 (19. 4. 2014 22:23)