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
+
0
-

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
+
0
-

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)