Flow3的PHP模板

时间:2012-03-15 19:30:22

标签: php template-engine typo3-flow

使用{3}}完成使用Flow3进行模板化。

是否有使用PHP模板的集成/简易解决方案? (无需自己编写模板渲染器)

(为了避免误解:通过PHP模板,我的意思是HTML代码与PHP混合)

2 个答案:

答案 0 :(得分:0)

流体的全部意义不是这样做的。您可以为此编写自己的查看器。

一个快速的解决方法是编写一个使用eval()的php viewhelper。但从安全的角度来看,这将是非常糟糕的。

答案 1 :(得分:0)

您的控制器具有受保护的属性,默认为Fluid,将其更改为其他内容非常简单:

    protected $viewFormatToObjectNameMap = array('json' => '\TYPO3\FLOW3\MVC\View\JsonView');

现在看看同一目录中的EmptyController:\ TYPO3 \ FLOW3 \ MVC \ View \

您可以将此作为开头使用。你基本上要做的是满足一个assign方法,即如何将变量传递给你的主题。

接下来,提出一些标准化(例如,模板文件必须位于文件夹\ Resources \ Private \ Templates \ ControllerName \ ActionName.phtml中,注意文件扩展名)并说明哪个变量可用(例如$ view)。

现在一个非常基本的方法是:

    protected $view = array();

    public function assign($key, $value) {
        $this->view[$key] = $value;
    }

    public function render() {
        $this->controllerContext->getResponse()->setHeader('Content-Type', 'text/html');

        $view = $this->view;
        ob_start();         

        include_once($this->getTemplatePathAndFilename());
        $output = ob_get_contents();
        ob_end_clean();
        return $output;
   }
}

对于$ this-> getTemplatePathAndFilename()函数,您可以使用TYPO3 \ Fluid \ View \ TemplateView-> getTemplatePathAndFilename()方法中的代码并根据需要进行调整。

在模板文件中,您现在可以使用$ view变量。

我是我父母的复活节,他们缺乏运行环境,所以这没有经过测试,你可能会遇到问题,但这应该让你开始吧!