如何使用sfTemplateEngine在Symfony 1.4中渲染和获取纯PHP文件的输出(非部分输出)

本文概述

  • 1.下载模板插件Symfony 1.4
  • 2.启用模板引擎
  • 3.如何使用模板引擎
有时在Symfony 1.4项目中, 你将需要将具有特定内容的自定义模板呈现为特殊内容, 例如HTML不会出现在网站的任何部分, 而是出现在电子邮件, 通知等上。该项目中的部分内容非常有用并可能在某种程度上满足了这种需求, 但是有一种更好的方法可以完全不依赖框架的各个部分。
在本文中, 我们将向你介绍如何在Symfony 1.4中正确安装和使用sfTemplateEngine。
1.下载模板插件Symfony 1.4 第一步, 可以从中获取模板类的源代码, 这是Symfony 1.4文档网站上的文章和教程。你将找到仅使用诸如sfTemplateLoaderFilesystem或sfTemplateEngine之类的示例, 但是它们假定你已经具有这些类。如果像我一样在此框架中担任新手, 则需要知道与sfTemplateEngine相关的类本身并未包含在项目中。你可以使用Git下载代码:
git clone https://github.com/fabpot-graveyard/templating.git

或者只是从Github的官方存储库中下载模板的源代码。在我们的例子中, 我们将代码下载到Symfony 1.4的根插件目录中名为templating的目录中:
如何使用sfTemplateEngine在Symfony 1.4中渲染和获取纯PHP文件的输出(非部分输出)

文章图片
在我们的项目中, 它将具有以前的结构, 但是你可以根据需要更改它, 但是不要忘记在下一步中更改路径。
2.启用模板引擎 现在我们有了自动加载器文件, 其中包括Symfony 1.4模板引擎的类, 你可以使用require_once在项目配置文件(yourproject / config / ProjectConfiguration.class.php)中启用它:
< ?phprequire_once dirname(__FILE__) . '/../symfony-1.4.20/lib/autoload/sfCoreAutoload.class.php'; // 1. In this file register the autoloader of the template engine using the following line:// Note the path where we downloaded the plugin, yours can be different !require_once dirname(__FILE__) . '/../plugins/templating/lib/sfTemplateAutoloader.php'; // 2. And enable the sfTemplatesfTemplateAutoloader::register(); sfCoreAutoload::register(); class ProjectConfiguration extends sfProjectConfiguration {public function setup() {// Your original code}}

此步骤中的技巧是在项目配置中包括/templating/lib/sfTemplateAutoloader.php文件, 并从sfTemplateAutoloader类执行静态方法寄存器。
3.如何使用模板引擎 第一步, 要使用渲染引擎, 你将需要一个特定的路径来存储要渲染的模板。在本例中, 我们会将模板存储在Symfony 1.4的原始模板目录中, 该目录可从sf_app_template_dir常量(project / apps / frontend / templates)中检索。在此目录中, 我们将创建一个子目录, 即电子邮件, 该子目录将存储我们将使用模板引擎呈现的模板。例如, 我们将有一个模板, 即mail_message.php文件, 其中包含以下内容:
< html> < head> < title> Test sfTemplateEngine< /title> < /head> < body> < h1> < ?php echo $message . " ". $name; ?> < /h1> < /body> < /html>

【如何使用sfTemplateEngine在Symfony 1.4中渲染和获取纯PHP文件的输出(非部分输出)】要使用插件渲染此模板, 我们将通过项目中的简单控制器来完成此工作:
< ?phpclass indexActions extends sfActions {/*** Example action that will return a response to the browser.* * @param sfWebRequest $request* @return Response*/public function executeIndex(sfWebRequest $request) {// 1. Create the templates loader (provide the path to the templates as first argument)// note that the %name% wildcard will be replaced during the render method.$loader = new sfTemplateLoaderFilesystem(sfConfig::get('sf_app_template_dir').'/emails/%name%.php'); // 2. Create the Template Engine with the created loader$templateEngine = new sfTemplateEngine($loader, array('php' => new sfTemplateRendererPhp())); // 3. Render some template (mail_message.php) sending the parameters in the second array$generatedHTML = $templateEngine-> render("mail_message", array('message' => 'Hello', 'name'=> 'Carlos')); // 4. In this example, we will return a response to the browser with the generated HTMLreturn $this-> renderText($generatedHTML); }}

此操作将在浏览器中返回带有输出” Hello Carlos” 的视图作为响应。
编码愉快!

    推荐阅读