Php 在Symfony 2中使用moustach作为模板语言
我开始使用symfony2,但我想使用moustache作为模板语言,而不是Twig或PHP。我不想使用小胡子,因为它完全没有逻辑,而且如果我决定处理模板客户端的呈现,我也可以在javascript中使用它Php 在Symfony 2中使用moustach作为模板语言,php,symfony,mustache,Php,Symfony,Mustache,我开始使用symfony2,但我想使用moustache作为模板语言,而不是Twig或PHP。我不想使用小胡子,因为它完全没有逻辑,而且如果我决定处理模板客户端的呈现,我也可以在javascript中使用它 如何做到这一点?您必须创建一个实现并创建名为templating.engine.mustache的DIC服务的类来引用该类。然后在app/config.yml中可以设置默认引擎 #app/config.yml framework: #..... templating: e
如何做到这一点?您必须创建一个实现并创建名为
templating.engine.mustache的DIC服务的类来引用该类。然后在app/config.yml
中可以设置默认引擎
#app/config.yml
framework:
#.....
templating:
engines: ['mustache'] //mustache is the last portion of the service id
作为参考,您可以检查类及其。一些扩展@m2mdas answer的额外信息
如果您还不熟悉Symfony模板系统和捆绑包配置,请在开始编码之前查看以下内容:
现在是一个让你开始的快速配方。以下面的例子为例,不需要坚持使用所选的名称
1。创建一个Resources/config/mustache.xml
来定义您的服务并标识您的模板引擎服务(将其标记为“templating.engine”
)。
<?php
namespace MustacheBundle;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
class MustacheExtension extends Extension
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('mustache.xml');
// you may parse the $configs array here
// see: http://symfony.com/doc/current/cookbook/bundles/extension.html#parsing-the-configs-array
}
您可以使用Yaml和PHP而不是XML,但对于“公共”捆绑包,更倾向于使用XML
Mustache.php
2。创建一个扩展
类来处理包的语义配置。
<?php
namespace MustacheBundle;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
class MustacheExtension extends Extension
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('mustache.xml');
// you may parse the $configs array here
// see: http://symfony.com/doc/current/cookbook/bundles/extension.html#parsing-the-configs-array
}
示例:
4。创建一个实现
谢谢,这是一个非常好的答案,我会在写一些代码后尽快发布(我的个人项目正在使用simfony2!):)noisebleed:great writeup。它帮了我很多忙:)-这个。我已经完成了一个80%的任务。。。如果你想玩的话,我可以发布它:)我一直想完成这件事有一段时间了。。。请随意伸出援手。@BOB我伸出援手了,我对symfony2还相当陌生,我想我需要一些时间来理解一切,特别是因为这是在我的业余时间完成的,无论如何,谢谢你!)在最新提交时,“我的捆绑包”可与Symfony2 v2.1.0-DEV:)一起使用。您也可以尝试此捆绑包:
# app/config/config.yml
templating: { engines: ['twig', 'mustache'] }
<?php
// src/Acme/HelloBundle/Controller/HelloController.php
public function indexAction($name)
{
return $this->render('AcmeHelloBundle:Hello:index.html.mustache', array('name' => $name));
}