【问题标题】:How to loop through form fields in Sensio Generator Bundle如何遍历 Sensio Generator Bundle 中的表单字段
【发布时间】:2014-12-21 10:11:42
【问题描述】:

为了更好地满足我的需求,我已经为 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 %}

运行生成器时报错:第9行的“crud/views/new.html.twig.twig”中不存在变量“fields”

【问题讨论】:

  • “新”视图生成器 (github.com/sensiolabs/SensioGeneratorBundle/blob/master/…) 不会将字段传递给模板渲染。我假设您需要编写 renderFile 方法以包含 'fields' => $this->metadata->fieldMappings 但显然,这将涉及必须扩展实际类。
  • 你已经解决了这个问题。便便。
  • 是的。谢谢您的回答。写下你的问题有时有助于找到正确的方向。

标签: symfony twig crud


【解决方案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,
    ));
}

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

【讨论】:

猜你喜欢
  • 2015-04-07
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 2012-08-08
  • 2022-12-22
  • 2011-04-06
相关资源
最近更新 更多