如何在Zend Framework 1中使用模板引擎(胡子,车把)?

马丁

我想用布局渲染我的车把模板。我试图根据我在Smarty / ZF1上遇到的一些教程,从Zend_View_Abstract类中轻松地编写自己的View。不知道我是否要使用正确的方法,必须使用更简单的方法(控制器方法,助手等)。无论如何,我都会发布我拥有的内容:

<?php

use Handlebars\Handlebars;  

class Handlebars_View extends Zend_View_Abstract
{
    private $engine = false;

    public function __construct($data = array())
    {
        parent::__construct($data);

        $this->engine = new Handlebars;
    }

    public function assign($spec, $value=null)
    {

    }

    public function escape($var)
    {
        if (is_string($var))
        {
            return parent::escape($var);
        }
        elseif (is_array($var))
        {
            foreach ($var as $key => $val)
            {
                $var[$key] = $this->escape($val);
            }

            return $var;
        }
        else
        {
            return $var;
        }
    }

    public function render($name)
    { 
        // this will get me /var/www/shared-views-zf/application/views/scripts/
        // I don't know how to get the rest of the path e.g. 'users/login.phtml'
        //$viewScriptsPath = $this->getAllPaths()['scripts'][1]; // incomplete
        //$viewScriptsPath.= $viewNameFromSomewhere; // ??
        //$template = file_get_contents($viewScriptsPath); can't do this yet

        // get data which was pre assigned
        //$data = 

        // 
        //$content = $this->engine->render($template, $data)

        // i can set the layout content here (but how do I get the content)
        $this->layout()->content = 'Heloo';

        // getlayout full path
        require $this->getScriptPath($name); // require /var/www/shared-views-zf/application/layouts/scripts/layout.phtml
    }

    public function _run() {


    }
}

显然,我的渲染功能缺少某些部分,但希望可以看到我尝试的方向。另外,我的引导程序中包含以下内容:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initViews()
    {
        $view = new Handlebars_View();
        $viewRender = Zend_Controller_Action_HelperBroker::getStaticHelper(
            'ViewRenderer'
        );
        $viewRender->setView($view);
        $viewRender->setViewSuffix('phtml');
        Zend_Controller_Action_HelperBroker::addHelper($viewRender);
        return $view;
    }
}

好的,我知道我可能正在以完全错误的方式进行操作。以最简单的形式,您可以通过以下方式实现车把:

use Handlebars\Handlebars;

$engine = new Handlebars;

$template = file_get_contents($filePath);

$result = $engine->render(
    $template,
    $data
);

..但可以看出,我需要访问$ filePath(视图脚本文件),$ data(从控制器传递到视图的数组),然后可以从View类中设置如下布局:

$this->layout()->content = $result;
require $layoutPath;

如果有人可以解释该方法,我将不胜感激。我并没有真正获得文档或在线阅读教程。另外,我还坚持使用ZF1,因为这是我们大多数应用程序的编写方式。感谢您的帮助。

卡梅伦

试试看(未经测试,但可以带您到那里或很近)。

在渲染功能中:

public function render($name)
{ 
    $ext = pathinfo($name, PATHINFO_EXTENSION);
    // optional if you want to fallback to phtml
    if ($ext === 'hbs') {
        // get data which was assigned at controller level
        $data = $this->getVars();
        // it may get mad at this part!
        $template = file_get_contents($this->getScriptPath($name));
        // render
        $res = $this->engine->render($template, $data);
    } else {
        $res = parent::render($name);
    }
    return $res;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Zend框架1中使用模板引擎(胡子,车把)?

来自分类Dev

如何在zend framework 2中创建工厂?

来自分类Dev

如何在zend Framework 2中返回对象数组?

来自分类Dev

如何在Zend Framework表单中添加id属性?

来自分类Dev

如何在Zend Framework 1.12中访问我的模块

来自分类Dev

如何在xampp中安装zend Framework 1.12.9?

来自分类Dev

如何在zend Framework 2中配置路由?

来自分类Dev

如何在zend Framework 2中返回对象数组?

来自分类Dev

如何在Zend Framework 2中验证Checkbox?

来自分类Dev

如何在zend Framework 2中自动提交

来自分类Dev

如何在Zend Framework 2中接收文件

来自分类Dev

如何在Zend Framework Controller中访问全局变量

来自分类Dev

如何在Zend Framework 3中从Controller调用模型方法

来自分类Dev

如何在 Zend Framework 1.12 中设置路由

来自分类Dev

如何在 Zend Framework 3 中实现 CSRF 保护?

来自分类Dev

如何在 Zend Framework 3 中声明全局常量?

来自分类Dev

doctrine-extensions可上载,如何在Zend Framework 2中使用?

来自分类Dev

如何在Zend Framework 2中的表单字段集中使用服务?

来自分类Dev

如何在准则2和zend Framework 2中使用缓存?

来自分类Dev

如何在Zend Framework中的视图中使用选项构建正确的链接

来自分类Dev

Zend Framework 2:如何在ZfcUser中使用我自己的User表

来自分类Dev

如何在生产环境中使用zend Framework 2隐藏PDOException?

来自分类Dev

如何在Zend Framework中使用AJAX保存,删除,更新,搜索表单?

来自分类Dev

Zend Framework 2-如何在layout.phtml中使用表单助手

来自分类Dev

如何在生产环境中使用zend Framework 2隐藏PDOException?

来自分类Dev

Zend Framework 2:如何在ZfcUser中使用我自己的User表

来自分类Dev

如何在我们的应用程序中给出zend库路径?(在zend Framework 2.3中)

来自分类Dev

如何在Zend Framework 1中正确调用控制器/动作?

来自分类Dev

如何在Zend Framework 2中编写和使用配置文件

Related 相关文章

  1. 1

    如何在Zend框架1中使用模板引擎(胡子,车把)?

  2. 2

    如何在zend framework 2中创建工厂?

  3. 3

    如何在zend Framework 2中返回对象数组?

  4. 4

    如何在Zend Framework表单中添加id属性?

  5. 5

    如何在Zend Framework 1.12中访问我的模块

  6. 6

    如何在xampp中安装zend Framework 1.12.9?

  7. 7

    如何在zend Framework 2中配置路由?

  8. 8

    如何在zend Framework 2中返回对象数组?

  9. 9

    如何在Zend Framework 2中验证Checkbox?

  10. 10

    如何在zend Framework 2中自动提交

  11. 11

    如何在Zend Framework 2中接收文件

  12. 12

    如何在Zend Framework Controller中访问全局变量

  13. 13

    如何在Zend Framework 3中从Controller调用模型方法

  14. 14

    如何在 Zend Framework 1.12 中设置路由

  15. 15

    如何在 Zend Framework 3 中实现 CSRF 保护?

  16. 16

    如何在 Zend Framework 3 中声明全局常量?

  17. 17

    doctrine-extensions可上载,如何在Zend Framework 2中使用?

  18. 18

    如何在Zend Framework 2中的表单字段集中使用服务?

  19. 19

    如何在准则2和zend Framework 2中使用缓存?

  20. 20

    如何在Zend Framework中的视图中使用选项构建正确的链接

  21. 21

    Zend Framework 2:如何在ZfcUser中使用我自己的User表

  22. 22

    如何在生产环境中使用zend Framework 2隐藏PDOException?

  23. 23

    如何在Zend Framework中使用AJAX保存,删除,更新,搜索表单?

  24. 24

    Zend Framework 2-如何在layout.phtml中使用表单助手

  25. 25

    如何在生产环境中使用zend Framework 2隐藏PDOException?

  26. 26

    Zend Framework 2:如何在ZfcUser中使用我自己的User表

  27. 27

    如何在我们的应用程序中给出zend库路径?(在zend Framework 2.3中)

  28. 28

    如何在Zend Framework 1中正确调用控制器/动作?

  29. 29

    如何在Zend Framework 2中编写和使用配置文件

热门标签

归档