Ana Sayfa > PHP, Zend Framework > Zend MVC Ajax İsteklerinde View ve Layout İşlenmesini Etkisizleştirme

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 Etiketler:, ,

Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 108 other followers