Forms Symfony CRUD-表格和“;“视图”;

Forms Symfony CRUD-表格和“;“视图”;,forms,symfony,crud,Forms,Symfony,Crud,在Symfony中使用表单组件时,是否有方法重用该组件或表单的一部分,即CRUD的“查看”“读取”部分 我已经创建了一个表单类型(为了这个问题的目的变得简单): 对于“编辑”部分,很容易: {{ form_start(form) }} {{ form_row(form.name) }} {{ form_end(form) }} 并传递'form'=>$form->createForm()进行渲染 这将生成标签和类型定义中的所有内容 然而,说到查看阅读,似乎我必须这样做: <span>

在Symfony中使用表单组件时,是否有方法重用该组件或表单的一部分,即CRUD的“查看”“读取”部分

我已经创建了一个表单类型(为了这个问题的目的变得简单):

对于“编辑”部分,很容易:

{{ form_start(form) }}
{{ form_row(form.name) }}
{{ form_end(form) }}
并传递
'form'=>$form->createForm()
进行渲染

这将生成标签和类型定义中的所有内容

然而,说到查看阅读,似乎我必须这样做:

<span>Customer Surname</span> {{ data.name }}
客户姓氏{{data.name}
并将
'data'=>$customer
对象传递到渲染

在创建“视图”“读取”模板时,是否有方法获取表单类型的“标签”部分并使用它,以便在我更新标签时,它在“视图”“读取”和“更新”部分都会更改


表单似乎非常有用,特别是在具有数据转换等功能的情况下,但在“更新”和“查看”“读取”之间似乎有点代码重复。

是的。你可以使用翻译

形式:

->add('name',TextType::class, array('label' => 'form.name'))
在视图中-
form/form\u label.html.twig

{% block form_label %}
    {% spaceless %}
        <label for="{{ id }}">{{ id|replace({'_':'.'})|trans }}</label>
    {% endspaceless %}
{% endblock form_label %}
在任何您可以使用的视图中

{{ 'form.name'|trans }}
但请尝试不指定任何标签,然后可以使用默认标签生成为:

< name of bundle >_< name of class >_< name of property > 
2) 如果你不想写样板文件,(我更喜欢这种方式)

我假设您的bundle名为AppBundle,您的类名为Customer。现在可以在crud的“读取”部分使用字符串“Customer Name”:

<span>{{'app.customer.name'|trans}}</span>{{customer.name}}
{{'app.customer.name'|trans}{{{customer.name}
在形式上,它将自动添加,因此有足够的

{{form_start(form)}}
{{form_rest(form)}}
<input type="sumbit" name="Create/update - or translations of these words">
{{form_end(form)}}
{{form_start(form)}
{{form_rest(form)}
{{form_end(form)}}

以这种方式编写表单是一种很好的做法,并且不向表单定义追加
sumbit
。它允许将来更容易地构建嵌套表单,并创建一个表单用于创建和编辑

谢谢你的回答,丹尼尔,但是我不确定这是否回答了我想问的问题。当我说“查看”时,我实际上指的是“读取”,就像您通常只显示实体中的数据一样。我知道您只想在代码中的一个位置写入
客户姓氏。如果是,那么翻译是实现这一点的最纯粹的方式。如果您想拥有少量的代码,那么不要在表单中设置标签。将自动创建为例如
app\u customer\u name
,然后以_label.html.twig的形式转换为
app.customer.name
。接下来,您应该添加翻译,并且您可以在任何视图中使用{{'app.customer.name'}},以读取、更新、删除和创建crud的一部分。
form:
    name: 'Customer Name'
 app:
     customer:
         name: 'Customer Name'
<span>{{'app.customer.name'|trans}}</span>{{customer.name}}
{{form_start(form)}}
{{form_rest(form)}}
<input type="sumbit" name="Create/update - or translations of these words">
{{form_end(form)}}