Ben*_*ine 4 php symfony-forms twig silex
我在Silex应用程序中使用Symfony和Twig.
我有一个表格的注册页面:
{% extends "base.twig" %}
{% block title %}Welcome to My Example site{% endblock %}
{% block head %}
{{ parent() }}
{% endblock %}
{% block content %}
<div class="row">
<div class="span12">
<h2>Register</h2>
<p>
Register for this site and we'll give you free access to cool stuff
in addition you can subscribe to our premium content.
</p>
<form action="{{app.config.site.secureUrl}}/register-handler" method="post">
<fieldset >
{{ form_widget(form) }}
<button type="submit" class="btn btn-info">Send</button>
</fieldset>
</form>
</div>
</div>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
尝试呈现页面时出现以下错误:
Twig_Error_Syntax:第35行的"form_div_layout.html.twig"中不存在过滤器"trans"
我已将其缩小到未安装的Symfony转换扩展,因此默认模板位于:
vendor\symfony\twigbridge\Symfony\Bridge\Twig\Resources\views\Form\form_div_layout.html.twig
Run Code Online (Sandbox Code Playgroud)
无法正确呈现.
我在上面创建了一个没有翻译功能的新模板.
如何使用新模板而不是默认模板?
如果要将自己的模板用于表单,则只需在注册Twig时在选项中指定它:
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/[Path_to_views_directory]',
'twig.class_path' => __DIR__ . '/vendor/twig/lib',
'twig.form.templates' => array([path_to_your_overriden_template]),
)) ;
Run Code Online (Sandbox Code Playgroud)
请参阅文档:TwigProvider文档
但我认为最好使用原始模板并注册翻译提供程序,如下所示:
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'locale' => '[Your_locale]',
'translation.class_path' => __DIR__ . '/../vendor/symfony/src',
'translator.messages' => array()
)) ;
Run Code Online (Sandbox Code Playgroud)
如果您使用验证,请不要忘记阅读本食谱:
希望这会有所帮助.