[2.0.14] AJAX a FlashMessage

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

Nazdar,

skusam rozchodit posielanie flash messages v handle metode, ale nejako to stale nechce ist.

odkaz:

<a class="ajax btn btn-success" n:href="addProductToOrder! $p->id, $o->id">

nette js:

jQuery.extend({
	nette: {
		updateSnippet: function (id, html) {
			$("#" + id).html(html);
		},

		success: function (payload) {
			// redirect
			if (payload.redirect) {
				window.location.href = payload.redirect;
				return;
			}

			// snippets
			if (payload.snippets) {
				for (var i in payload.snippets) {
					jQuery.nette.updateSnippet(i, payload.snippets[i]);
				}
			}
		}
	}
});

jQuery.ajaxSetup({
	success: jQuery.nette.success,
	dataType: "json"
});

$(function(){
	$("a.ajax").on("click", function (event) {
		event.preventDefault();
		$.get(this.href);
	});
});

handle metoda:

public function handleAddProductToOrder($productID, $orderID) {
		$product = $this->productModel->getProductByID($productID);
		$result = $this->orderModel->addItemToOrder($orderID, $productID, 1, $product->retail_price);
		if($result) {
			$this->flashMessage("Added", "success");
		} else {
			$this->flashMessage("Fail", "danger");
		}
		if($this->isAjax())
			$this->invalidateControl();
		else
			$this->redirect('this');
	}

flash snippet:

{snippet flashes}
{foreach $flashes as $flash}
<div class="alert alert-{$flash->type}">
	<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
    <h4>
    	{!$flash->message}
    </h4>
</div>
{/foreach}
{/snippet}

skusal som aj invalidovat priamo snippet flashes ale nepomohlo

ako response dostavam stale toto:

{"state":[]}

nasiel som v dokumentacii ze sa flash messages zobrazia az po redirecte. ale ja to chcem nie po redirecte, ale vynutit prekreslenie v handle metode

Vdaka
RR

RandoMMeR
Člen | 4
+
0
-

problem je vyrieseny.
po skumani bol problem s tym, ze snippet flashes bol v subore „notifications.latte“ ktory bol includovany.

{snippet flashes}
	{include notifications.latte}
{/snippet}

takto to uz funguje perfektne