【问题标题】:Symfony2: How to display choices field text?Symfony2:如何显示选择字段文本?
【发布时间】:2015-06-02 11:02:59
【问题描述】:

我首先生成一个学说 CRUD 文件。 此表单有一个包含选项值和名称的选项字段。 newAction 和 updateAction 使用它。 但是 index(list)Action 显示的是原始值,而不是名称。 如何在 index.html.twig 中显示选项名称的最佳方式?

SampleFormType.php

$builder->add('name')
    ->add('isActive', 'choice', array(
        'choices' => array(false => 'Inactive', true => 'Active'),
        'expanded' => true,
        'multiple' => false,
    ));

index.html.twig

{% for entity in entities %}
<tr>
    <td>{{ entity.name }}</td>
    <td>{{ entity.isActive }}</td>
    <!-- Show '0' or '1', not 'Inactive' or 'Active' -->
</tr>
{% endfor %}

我应该在控制器中制作树枝扩展过滤器还是将值转换为名称?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    有许多不同的方法可以做到这一点。一个简单的就是基本条件

    {{ entity.isActive ? 'Active' : 'Inactive' }}
    

    但如果您需要在多个地方使用此值,这可能会很快违反DRY

    我认为 twig 扩展应该保留给不那么特定领域的东西。您可以使用macros,但它们通常也有其他用途。

    架构上更合理的想法是根本不将实体对象发送到视图。在良好的 MVC 分离系统中,ViewModel 不直接交互。

    考虑一下 Symfony 如何处理复杂对象的视图,例如 forms - 您可以为您的实体采用类似的模式。您甚至可以考虑使用 Fractal 之类的东西,它是为超媒体 API 设计的,但绝对可以用于视图对象。

    【讨论】:

    • 非常感谢!我不知道宏。我会试试这个。
    猜你喜欢
    • 2023-04-09
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多