📜  symfony twig 表单值 - Html (1)

📅  最后修改于: 2023-12-03 15:20:25.749000             🧑  作者: Mango

Symfony Twig表单值 - HTML主题

如果你是一个Symfony开发者,你肯定会用到Symfony的Form组件来创建表单。Twig是Symfony默认的模板引擎之一,它可以用来渲染表单。

本文将介绍如何使用Twig在HTML主题中呈现表单值。我们将涵盖以下主题:

  1. Twig表单值 - HTML主题

在使用Twig展示表单值之前,你需要先定义表单并获取对应的数据。例如,你可以使用Symfony表单组件中的createForm函数创建表单,然后使用handleRequest函数处理提交的请求,获取表单数据。

// 创建表单
$form = $this->createForm(ContactType::class, $contact);
// 处理表单提交
$form->handleRequest($request);
// 获取表单数据
$data = $form->getData();

在获取表单数据之后,你就可以在Twig中使用表单的变量来展示表单值。在HTML主题中,你可以使用<input>标签、<textarea>标签和<select>标签来呈现表单值。

例如,以下代码展示了如何在一个基本的表单中使用Twig来呈现表单值。

<form action="{{ path('submit_contact') }}" method="POST">
    {{ form_start(form) }}
    <div>
        <label for="{{ form.name.vars.id }}">Name:</label>
        <input type="text" id="{{ form.name.vars.id }}" name="{{ form.name.vars.full_name }}" value="{{ data.name }}" />
    </div>
    <div>
        <label for="{{ form.email.vars.id }}">Email:</label>
        <input type="email" id="{{ form.email.vars.id }}" name="{{ form.email.vars.full_name }}" value="{{ data.email }}" />
    </div>
    <div>
        <label for="{{ form.subject.vars.id }}">Subject:</label>
        <select id="{{ form.subject.vars.id }}" name="{{ form.subject.vars.full_name }}">
            {% for subject in form.subject.vars.choices %}
                <option value="{{ subject.value }}" {% if subject.value == data.subject %}selected{% endif %}>{{ subject.label }}</option>
            {% endfor %}
        </select>
    </div>
    <div>
        <label for="{{ form.message.vars.id }}">Message:</label>
        <textarea id="{{ form.message.vars.id }}" name="{{ form.message.vars.full_name }}">{{ data.message }}</textarea>
    </div>
    {{ form_end(form) }}
</form>

在上面的代码中,我们使用了value属性来呈现<input>标签中的值,使用selected属性来呈现<select>标签中的值,使用{{ data.message }}来呈现<textarea>标签中的值。

  1. Twig表单值 - HTML主题(更复杂的表单)

当你的表单更加复杂时,你可能需要使用更多的Twig变量来呈现表单值。例如,你可以使用{{ form_errors(form) }}来呈现表单中的错误信息,使用{{ form_label(form.field) }}来呈现表单的标签。

下面是一个具有更多细节的表单示例:

<form action="{{ path('submit_contact') }}" method="POST">
    {{ form_start(form) }}
    <div>
        {{ form_label(form.name) }}
        {{ form_widget(form.name, {'attr': {'class': 'form-control'}, 'value': data.name}) }}
        {{ form_errors(form.name) }}
    </div>
    <div>
        {{ form_label(form.email) }}
        {{ form_widget(form.email, {'attr': {'class': 'form-control'}, 'value': data.email}) }}
        {{ form_errors(form.email) }}
    </div>
    <div>
        {{ form_label(form.subject) }}
        {{ form_widget(form.subject, {'attr': {'class': 'form-control'}, 'value': data.subject}) }}
        {{ form_errors(form.subject) }}
    </div>
    <div>
        {{ form_label(form.message) }}
        {{ form_widget(form.message, {'attr': {'class': 'form-control'}, 'value': data.message}) }}
        {{ form_errors(form.message) }}
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
    {{ form_end(form) }}
</form>

在上面的代码中,我们使用了{{ form.label(form.name) }}{{ form.widget(form.name, {'attr': {'class': form-control'}, 'value': data.name}) }}{{ form.errors(form.name) }}来呈现表单名称、输入框和错误信息。

以上是如何在Twig中使用HTML主题来呈现Symfony表单中的值的简单使用方法。如果你想深入了解Twig和Symfony表单,请查看官方文档