Zend MVC Ajax İsteklerinde View ve Layout İşlenmesini Etkisizleştirme
Zend MVC her bir istek yapıldığında ilgili view işler ve bunu layout ile birleştirip çıktıyı oluşturur. Ajax isteklerinde ise genellikle sadece veri (json, xml, ..) döndürürüz. Bunu sağlamak için ilgili Ajax işleminde layout ve view işlenmesini engelleriz. Bunu ilgili Controller/Action ‘da yapabiliriz. Örneğin:
public function ajaxupdateuserrightsAction() {
if ($this->_request->isXmlHttpRequest()) {
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
.....
}
}
Bu yöntemle yaptığımızda her Ajax isteği olan Controller/Action’da bu kontrolu yapmamız gerekecektir. Eğer uygulamanın genelinde bütün ajax isteklerinde Layout ve View işlenmesini engellemek istiyorsak bunu Zend Controller’a eklenti (plugin) yazarak yapabiliriz. Örneğin;
class Zend_Controller_Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$data = $request->getParams();
if ($this->_request->isXmlHttpRequest()) {
$t = Zend_Layout::getMvcInstance();
$t->disableLayout();
$v = Zend_Controller_Action_HelperBroker::getExistingHelper('viewRenderer');
$v->setNoRender(true);
$v->setNeverRender(true);
}
}
}
Bu eklentiyi aşağıdaki gibi aktif hale getirmek gerekir. Bunu bootstrap dosyasında yapabiliriz.
/* Plugin for layout management */ $layoutManager = new ZendX_Controller_Plugin_Layout(); Zend_Controller_Front::getInstance()->registerPlugin($layoutManager);
Categories: PHP, Zend Framework
mvc, PHP, Zend Framework
