gpt4 book ai didi

php - 使用 Symfony Forms、Twig 和 SymfonyTwigBridge 时如何覆盖默认模板?

转载 作者:可可西里 更新时间:2023-10-31 22:14:11 24 4
gpt4 key购买 nike

我在 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 %}

尝试呈现页面时出现以下错误:

Twig_Error_Syntax: The filter "trans" does not exist in "form_div_layout.html.twig" at line 35

我已将其缩小到未安装 Symfony 翻译扩展,因此默认模板位于:

vendor\symfony\twigbridge\Symfony\Bridge\Twig\Resources\views\Form\form_div_layout.html.twig

未正确呈现。

我在上面的模板的基础上做了一个没有翻译功能的新模板。

问题

如何让 twig 使用新模板而不是默认模板?

最佳答案

如果你想使用自己的表单模板,你只需要在注册 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]),
)) ;

请参阅文档:TwigProvider documentation

但我认为最好使用原始模板并像这样注册翻译提供者:

$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'locale' => '[Your_locale]',
'translation.class_path' => __DIR__ . '/../vendor/symfony/src',
'translator.messages' => array()
)) ;

如果您使用验证,请不要忘记阅读这本食谱:

Translation cookbook

希望这会有所帮助。

关于php - 使用 Symfony Forms、Twig 和 SymfonyTwigBridge 时如何覆盖默认模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com