php – 如何扩展Zend视图以实现具体功能?

前端之家收集整理的这篇文章主要介绍了php – 如何扩展Zend视图以实现具体功能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想让设计师尽可能简单地在视图中本地化字符串,这意味着我想这样做:
  1. ...
  2. <p><?PHP echo $this->_("Hello,world!"); ?></p>
  3. ...

这里的下划线符号是必要的,以允许Poedit自动提取所有字符串进行本地化.实施是微不足道的:

  1. public function _($string)
  2. {
  3. return Zend_Registry::get('Zend_Translate')->_($string);
  4. }

目前,我已将它直接放在Zend_View_Abstract中,这很糟糕(我不想通过修改任何Zend库来实现这一点).理想情况下,我会扩展Zend_View_Abstract以允许我实现我们需要的其他具体功能,但我不知道如何设置它.另一种方法可能是实现View Helper,但我知道如何执行此操作的唯一方法是使视图中的代码更加冗长.任何指针(不,不是那种)将非常感激.谢谢!

显然忽略了我自己的道路……

>扩展Zend_View
>将您的方法放在此扩展类中
>实例化类(例如在您的引导程序中)
>将其分配给ViewRenderer
>将该viewrenderer传递给Zend_Controller_Action_HelperBroker的addHelper方法
>在您的视图中使用它

在/ library / MegaHAL / Zend / create View.PHP中:

  1. class MegaHAL_Zend_View extends Zend_View
  2. {
  3. public function _($string)
  4. {
  5. return Zend_Registry::get('translate')->_($string);
  6. }
  7. }

在你的引导程序中:

  1. require_once APPLICATION_PATH.'../library/MegaHAL/Zend/View.PHP';
  2.  
  3. $view = new MegaHAL_Zend_View();
  4.  
  5. $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
  6. $viewRenderer->setView($view);
  7. Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

在你看来:

  1. <p><?PHP echo $this->_("Hello");?></p>

我相信会做你想做的事,是吗?

猜你在找的PHP相关文章