Zend Framework kontrolörleri görünüm yardımcıları kullanın

5 Cevap php

AJAX (json veri gönderir) ile çağrılan bir denetleyici var, bu yüzden bir görünümü kullanmak yok.

Ben kullanmak gerekir bir personel view helper benim verileri biçimlendirmek, ama in my controller.

Is that possible ?

Ya da belki doing it wrong (belki bir görünümü var, ama nasıl JSON ile) ben?

5 Cevap

Sen tarafından Controller herhangi ViewHelper erişebilirsiniz

$this->view->helpername(/*params*/);
// or
$helper = $this->view->getHelper('helpername');
// or
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$broker->getView()->helpername(/*params*/);

Bkz http://stackoverflow.com/questions/2353034

Ancak, yanlış (funny pic btw) yaptığını doğru olabilir, ama ben gerçekten senin soru söyleyemem. Eğer görünüm yardımcısı ve ne biçimlendirmek gerekiyordu aramak gerekir neden olarak rafine edin.

Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

Sadece geri görünüm istediğiniz görünümü olduğundan emin olun. Satır aşağı, görünüm yazılır alabilir ve denetleyici bir şaplak yeni bir görünüm var çünkü.

Ve bütün bu değerler denetleyici aksiyon yardımcısı ve benzeri ... üzerindeki görünümünde kurulum başladı önce? Tüm rüzgarla beraber gitti!

Yani varsayarak önce testi ki bir görünüm kaynak olsun. hepsi senin vars hala orada olduğunu gerçekten beklediğiniz aynı görünüm kaynaktır, ve.

I gibi sürpriz olabilir!

Bir Helper bir örneğini oluşturabilir .. Bu Kontrolörleri, Modeller çalışacak ve her yerde Yardımcısı gerekir.

örn.

// create Instance   
$serverUrl_helper = new Zend_View_Helper_ServerUrl();

// get the ServerUrl
$serverUrl = $serverUrl_helper->serverUrl();

Diğer bir yaklaşım, ContextSwitch or AjaxContext action-helpers kullanmaktır. Bu size daha sonra standart bir şekilde görünüm-yardımcıyı arayabileceğiniz bir görünüm komut dosyası kullanmak için izin verir.

Sadece eylem yardımcıları kullanmak, görünüm yardımcıları pek çok eylem yardımcıları olarak mevcuttur.

Veya doğrudan Zend_Date ya da sprintf kullanılarak gerçekleştirilir.