【问题标题】:Zend Framework - Can you support multiple View Renderers?Zend Framework - 你能支持多个视图渲染器吗?
【发布时间】:2011-03-16 01:05:17
【问题描述】:

我有一个 Zend Framework 项目,由于以前程序员的专业知识,使用了视图 Smarty 视图渲染引擎(在引导程序中设置)。

我现在想 - 随着时间的推移 - 迁移到默认的 ZF PHTML 视图渲染器,甚至可能使用 PHPTAL

在我进行迁移(.tpl 到 .phtml)时,ZF(1.10+ 版)能否支持多个视图渲染器?我找不到有关该主题的任何文档。

【问题讨论】:

  • 视图是在每个动作中手动实例化的,还是你在依赖魔法?这还取决于他们如何将 Smarty 嵌入其中。不久前,人们普遍接受的做法是简单地围绕 Smarty 编写一个实现 Zend_View_Abstract...
  • 感谢 Charles,实现是通过扩展 Zend_View_Abstract 然后在引导程序中设置它,例如$view = new My_View_Smarty($config->smarty->toArray()); // extends Zend_View_Abstract $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); $viewRenderer->setViewSuffix($config->smarty->suffix);`
  • 好的,所以在这种情况下,您应该能够为您想要现代化的每个操作逐个声明替换视图。不幸的是,我没有立即回忆起如何正确地做到这一点,但它应该为其他知道如何做的人打开大门。 :)

标签: php zend-framework


【解决方案1】:

嗨 我使用默认的 zend 框架视图,但我可以在其中使用 smarty 视图 使用此代码

echo $this->render("sample.tpl");

我确定你也可以这样做,但你必须在视图文件中编写这样的代码

echo $this->render("sample.phtml");

或者像这样在控制器文件中

$this->view->render("sample.phtml");

祝你好运

【讨论】:

    【解决方案2】:

    如下设置任何新布局。

    $this->layout()->setLayout('layout1'); // layout.phtml
    

    如果你有多个布局,你可以有条件地使用它。

    如下禁用布局

    $this->layout()->disableLayout(); 
    

    在您的布局模板中执行以下操作以呈现多个模板。

    <?php echo $this->render('header.phtml') ?>
    <?php echo $this->render('sidebar.phtml') ?>
    <?php echo $this->render('box.phtml') ?>
    <?php echo $this->render('slider.phtml') ?>
    

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      相关资源
      最近更新 更多