Zend Framework: tarayıcıya gönderilmeden önce nasıl son görünüm çıkış içine dokunabilirsiniz?

2 Cevap php

Ben bir dize olarak tarayıcıya gönderilmeden hemen önce son xhtml çıkışını erişmeye çalışıyorum. Eylem ve eklentileri postDispatch () yöntemleri bunu yapmak için çok erken gibi görünüyor. Ben bir hata ayıklayıcı kullanarak Zend_Controller_Front::dispatch() yöntemiyle adım, ben $this->_response->sendResponse() Gözcü ifadesi {[(2) ekleyerek çok sonunda denir hemen önce bir dize olarak istenilen çıkışı erişebilirsiniz }]. Ancak, şu var girmeleri için hiçbir özel kanca gibi görünüyor. Ben bir pdf oluşturmak için Prens XML göndermek için bir dize olarak nihai bir yanıt beden gerekir. Herkes bunu yapmak için zarif bir yol biliyor mu?

Teşekkürler, Adrian

2 Cevap

Zend_Controller_Front eklenti kanca aşağıdaki gibidir (dan here) vardır:

  • Zend_Controller_Front kayıtlı yolları karşı isteğini değerlendirmek için yönlendirici çağrıda önce routeStartup() denir.
  • Yönlendirici isteği yönlendirme bittikten sonra routeShutdown() denir.
  • Zend_Controller_Front onun sevk döngüye girmeden önce dispatchLoopStartup() denir.
  • Bir eylem dağıtıcı tarafından gönderilmeden önce preDispatch() denir. Bu geri çağırma proxy veya filtre davranış sağlar. İsteği değiştirerek ve bellek biriminin geri gönderilir (En ile Zend_Controller_Request_Abstract::setDispatched(false)), geçerli eylem atlanır ve / veya değiştirilebilir.
  • Bir eylem dağıtıcı tarafından gönderilmesinden sonra postDispatch() denir. Bu geri çağırma proxy veya filtre davranış sağlar. Isteği değiştirerek ve (Zend_Controller_Request_Abstract::setDispatched(false) aracılığıyla) kendi sevk bayrağını sıfırlayarak, yeni bir aksiyon gönderilmesi için belirtilebilir.
  • Zend_Controller_Front onun sevk döngü çıktıktan sonra dispatchLoopShutdown() denir.

Yani dispatchLoopShutdown() gitmek için kanca - bu Zend_Controller_Front::dispatch() yanıtı dönen veya göndermeden önce yaptığı son şey.

Başka bir seçenek Zend_View filtreleri kullanmak için, tamamen farklı bir şey için tasarlanmış olsa da, olabilir. Bu filtreler Zend_View-örneğine ilave edilebilir ve Zend_View::render() olarak adlandırılır. Filtre sadece döndüren bir filter($buffer)-yöntem sağlar sınıfının bir örneği olan süzülmüş $buffer. Ama filtering ouptut ilgili olmayan bir şey için bu arayüzü kullanarak, aslında doğru yolu değil gibi görünüyor.

Ben şahsen bir dispatchLoopShutdown()-plugin gitmek için yol olacağını düşünüyorum.

Görünüm filtreleri kullanmak için nasıl İşte bir örnek

http://matthewturland.com/2008/06/04/output-filters-in-zend_view/