Ryszard J.

Ryszard J. Informatyk,
wdrożeniowiec
oprogramowania,
szkoleniowiec

Temat: Zend 2 i ajax / akcje bez widoku

Witam,

jak w Zend 2 tworzyc akcje ktore beda wykonywane bez widoku ?
W Zend lini 1 stosowało sie polecenie cos w stylu:

$this->getHelper('viewRenderer')->setNoRender();

Doprecyzuje: chce użyć funkcji js np z jquery ktora uruchomi dana akcje. Przy tym nie ma być generowany widok.

Dziekuje za wskazówki
Marcin Federowicz

Marcin Federowicz Morizon.pl - Od
wyszukania do
zamieszkania

Temat: Zend 2 i ajax / akcje bez widoku

Witam a nie zadziała coś takiego :

public function ajaxAction()
{
$this->_helper->layout->disableLayout();
$request = $this->getRequest();
$params = $request->getParams();
$msg = "test";
$this->_helper->json(array($msg));

}

helper : $this->_helper->json(); pozwala na zamianę stringa, tablicy, obiektu na postać jsonową. Dosyć przydatna funkcjonalność :) Zwracany jest obiekt json i nie generowany jest wtedy widok.

no i po stronie skryptu js robisz:

$.get('/ajax', {}, function(data) {
alert(data);
});

oczywiście w musisz mieć zdefiniowane w ruoutingu aplikacji że request /ajax odnosi sie do akcji ajax w controllerze np indexController.php

takie cos powinno zadziałać na zf2 jak i zf1
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: Zend 2 i ajax / akcje bez widoku

http://framework.zend.com/manual/2.0/en/modules/zend.v...

There will be times you don’t want to render a layout. For example, you might be answering an API call which expects JSON or an XML payload, or you might be answering an XHR request that expects a partial HTML payload. The simplest way to do this is to explicitly create and return a view model from your controller, and mark it as “terminal”, which will hint to the MVC listener that normally injects the returned view model into the layout view model to instead replace the layout view model.

public function doSomethingAction()
{
$view = new ViewModel(array(
'message' => 'Hello world',
));

// Disable layouts; use this view model in the MVC event instead
$view->setTerminal(true);

return $view;
}

Następna dyskusja:

Zend_Cache / Renderowanie w...




Wyślij zaproszenie do