【问题标题】:Add CSS to Form Type is Symfony2添加 CSS 到表单类型是 Symfony2
【发布时间】:2012-09-30 07:02:54
【问题描述】:

我有一个编辑表单,该表单是通过 symfony2 表单类型制作的。我检查了文档,但找不到将 CSS 添加到表单的任何选项。表单正确显示数据,一切都很好我想做的就是为每个字段添加样式。

我的编辑类型是

 public function buildForm(FormBuilder $builder, array $options)
{
    $builder
    ->add('id', 'hidden')
    ->add('patent_name', 'text', array('label' => 'Patent Name'))
    ->add('description', 'textarea', array('label' => 'Description', 'required' => false))
    ->add('appln_auth','text', array('label' => 'Application Authorization'))
    ;
}

有人知道我可以添加 css 吗?

谢谢

【问题讨论】:

  • 向您的 FormTypes(逻辑)添加演示文稿内容(CSS 样式,...)在语义上是错误的。所以即使有可能也不要这样做

标签: php css forms symfony


【解决方案1】:

这是您在构建表单时可以做到的方式,

 $builder->add('field_name', 'text', array('label' => 'Field Label', 'attr' => array('class' => 'fieldClass')));

您也可以在渲染表单字段时这样做,看看Twig template form function reference

{{ form_label(form.field, 'label', { 'attr': {'class': 'foo'} }) }}
{{ form_widget(form.field, { 'attr': {'class': 'bar'} }) }}

然后,您可以在捆绑的公共资产中添加一个 css 文件,并在模板中使用,

{% block stylesheets %}
    {% parent() %} {# if you want to keep base template's stylesheets #}
    <link href="{{ asset('bundle/myBundle/css/stylesheet.css') }}" type="text/css" rel="stylesheet" />
{% endblock %}

然后,您必须让您的公共资产可以通过您的 web/ 目录访问。 最好的方法是创建针对您的捆绑公共资产的符号链接,然后您必须执行

assets:install web/ --symlink

当您想要彻底自定义特定表单字段呈现块 (Twig) 时,另一个有用的方法是定义一个新的 form theme,这是文档 > Form theming in Twig

【讨论】:

    【解决方案2】:

    这可能会有所帮助:

    $builder->add('patent_name', 'text', array('label' => 'Patent Name', 'attr' => array('class' => 'someclass')));
    

    【讨论】:

      【解决方案3】:

      如果你想为你的字段添加类,你必须以这种方式使用 attr 特殊属性和你的构建表单的 add 操作

      $builder->add('field_name', 'yourType', array('attr' => array('class' => 'fieldClass')));
      

      如果你想链接你的样式表,你必须使用资产。
      你可以找到更多关于资产here

      要使用您必须做的资产:

      • 创建您的 css 文件
      • 使用assets:install 安装您的资产(我建议使用--symlink 选项,该选项将反映css 更改,除非它们被缓存)
      • 通过在模板中使用 CSS 来享受它。如果是树枝,你必须这样做 link href="{{ asset('bundles/acmebundle/css/style.css') }}" type="text/css" rel="stylesheet">(acmebundle 是你的捆绑包)

      【讨论】:

        【解决方案4】:

        您可以像这样为 ChoiceType 添加 CSS 样式:

        ->add('triage', DocumentType::class, [
                            'label' => 'Triage',
                            'required' => false,
                            'placeholder' => 'select',
                            'label_attr' => [
                                'class' => 'col-sm-2 control-label',
                            ],
                            'choice_attr' => function($choice, $key, $value) {
                                return ['style' => 'background:' . $choice->getColorCode().'; color:white;'];
                            },
                            'class' => 'AppBundle:TriageMaster',
                            'choice_label' => 'triage',
                        ])  
        

        这里我使用来自选项的数据来选择 CSS 样式。

        【讨论】:

          猜你喜欢
          • 2015-01-28
          • 2023-03-16
          • 2014-02-19
          • 2016-09-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多