Symfony2形式的CSS:" Hello World"当量

时间:2014-04-04 19:32:43

标签: css forms symfony

如何更改fields.html.twig模板? 我只是在寻找相当于第一次改变形式的“你好世界”。

什么工作(在捆绑视图中作为add.Article.html.twig):

         <div class="well;">
              <form method="post" {{ form_enctype(form) }}>
                 {{ form_widget(form,{attr: {class:'test'}} ) }}
                 <input type="submit" class="btn btn-primary" />
              </form>
         </div>

测试类只执行CSS .test {background-color:gray;}。我通常使用Bootstrap。


在fields.html.twig中我有:

    {% block aliquam_input %}
    {% spaceless %}
      <div>
        {{ form_label(form) }}
        {{ form_errors(form) }}
        {{ form_widget(form, { 'attr': {'class': 'test'} }) }}
      </div>
    {% endspaceless %}
    {% endblock %}

并在app / config / config.yml中:

   # Twig Configuration
   twig:
   //..
     form:
        resources:
            - 'AliquamSummaryBundle:Form:fields.html.twig'

field.html.twig对主枝很好,因为我在删除字段twig中的一个散列时出错。


什么不起作用(即类测试没有显示)是当我尝试使fields.html.twig在Article.html.twig上生效时:

   {% block aliquam_input %}
   {% spaceless %}
    <div class="well;">
        <form method="post" {{ form_enctype(form) }}>
            {{ form_widget(form) }}
            <input type="submit" class="btn btn-primary" />
        </form>
    </div>
   {% endspaceless %}
   {% endblock %}

由于所有表单都具有相同的格式,我宁愿不将所有html属性设置为每一行。但是,使用fields.html.twig模板使类“test”生效的方法是什么?

__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ___ David的更新 __ _ __ _ __ _ ____ 谢谢@David,但不幸的是将名称添加为form.name并没有改变任何东西。 CSS属性仍未转移到html中的表单。好后分号的好位置;这是一个深夜错字,但与问题无关。

这是我到目前为止所得到的。我可能不得不最终必须在一个表单(可怕的想法)中为每个单独的行输入bootstrap CSS,或者通过实体选项来计算如何执行此操作,这几乎与为每一行做同样可怕的想法。由于doc提供了通过app / config / config.yml输入所有表单的模板,所以应该有一个更简单的方法,但我不明白。

以下是迄今为止唯一使CSS工作的方向,即类.test {background-color:black;}正在完成其工作:

    {# ..\addArticle.html.twig #}

    <div class="well">
        <form method="post" {{ form_enctype(form) }}>
            {{ form_widget(form) }}
            <input type="submit" class="btn btn-primary" />
       </form>
     </div>

注意:div周围没有{%block ..%},这是有意义的,因为我将fields.html.twig通过app / config / config.yml包含在symphony标准小部件中。以上内容与下面的fields.html.twig相同。

   {# ..\fields.html.twig #}

    {% block widget_attributes %}
    {% spaceless %}
          {{" class=\'test\'" }}
    {% endspaceless %}
    {% endblock widget_attributes %}

到目前为止,只有textarea的字段显示黑色,这就是“hello world”。我不确定这是否是正确的方法继续进行,因为我在这个和其他论坛中没有发现任何相似之处,而且doc仅指出要在git上查看form_div_layout.html.twig来决定要更改哪个属性,哪个不是很有帮助(对我而言)。

2 个答案:

答案 0 :(得分:0)

首先将您的 well; 类更改为add.Article.html.twig中的 well

为了在您的小部件上放置一个课程,我认为您可以尝试

{{ form_widget(form.name, {'attr': {'class': 'test'}}) }}

与您的代码的区别在于 form.name 参数。如果您只提供表单,则不会应用已通过的选项。 See the doc

答案 1 :(得分:0)

将fields.html.twig更改为

    {# ..\fields.html.twig #}

      {% block widget_attributes %}
      {% spaceless %}
        {{" class=\'test\'" }}
      {% endspaceless %}
      {% endblock widget_attributes %}

确实是正确的Symfony以及使用bootstrap-CSS的原因只有textareas显示class =“test”的原因是bootstrap强制指定(除了textareas之外)与bootstrap特定的一个。 因为我不想改变引导程序,所以我最终从实体中为每个小部件分配属性 - 其他任何东西都可能会打开一堆蠕虫。