2

使用 Flow3 进行模板化是使用流体模板语言完成的。

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

(为避免误解:我所说的 PHP 模板是指与 PHP 混合的 HTML 代码)

4

2 回答 2

0

流体的全部意义在于不这样做。您可以为此编写自己的视图助手。

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

于 2012-03-16T08:14:19.547 回答
0

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

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

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

你可以用它作为开始。您基本上要做的是满足分配方法,即如何将变量传输到主题的方式。

接下来,提出一些标准化(例如,模板文件必须在文件夹 \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 变量。

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

于 2012-04-07T12:55:54.077 回答