如何在Sensio Generator Bundle中遍历表单字段

时间:2014-12-21 10:11:42

标签: symfony twig crud

为了更好地满足我的需要,我已经覆盖了用于CRUD的Sensio Generator Bundle。

我想做的是能够遍历实体字段。 默认情况下,它在show.html.twig中完成,但不在新视图和编辑视图中完成。

当我在new.html.twig.twig中实现相同的逻辑时,虽然它适用于edit.html.twig.twig,但它不起作用。

{#app/Resources/SensioGeneratorBundle/skeleton/crud/views/new.html.twig.twig#}

{% for field, metadata in fields %}
    {% if field not in 'id' %}
        {{ '{{ form_row(edit_form.' ~ field ~ ')}}' }}
    {% endif %}
{% endfor %}

运行生成器时,错误是:变量"字段"在" crud / views / new.html.twig.twig"中不存在在第9行

1 个答案:

答案 0 :(得分:1)

好的,事实上它是Sensio Generator Bundle中的一个问题。 在文件中:sensio \ generator-bundle \ Sensio \ Bundle \ GeneratorBundle \ Generator \ DoctrineCrudGenerator.php,generateNewView函数缺少一个参数。它不是传递字段而不是generateShowView。

以下是比较:

protected function generateNewView($dir)
{
    $this->renderFile('crud/views/new.html.twig.twig', $dir.'/new.html.twig', array(
        'bundle'            => $this->bundle->getName(),
        'entity'            => $this->entity,
        'route_prefix'      => $this->routePrefix,
        'route_name_prefix' => $this->routeNamePrefix,
        'actions'           => $this->actions,
    ));
}

protected function generateShowView($dir)
{
    $this->renderFile('crud/views/show.html.twig.twig', $dir.'/show.html.twig', array(
        'bundle'            => $this->bundle->getName(),
        'entity'            => $this->entity,
        'fields'            => $this->metadata->fieldMappings,
        'actions'           => $this->actions,
        'route_prefix'      => $this->routePrefix,
        'route_name_prefix' => $this->routeNamePrefix,
    ));
}

我会尝试将此作为改进发布。