2012-10-09 49 views
11

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

我的编辑类型是

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?

感谢

+0

这是语义错误的东西添加呈现的东西(CSS样式,...)到你的FormTypes(逻辑)。所以即使这是可能的,也不要这样做 – Trix

回答

15

这是构建表单时,你可以做到这一点,

$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 

另一种有用的方法(小枝)是定义新的form theme,这里是文档>Form theming in Twig

0

这可能帮助:

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

如果你想添加类的领域,你如果你希望你的样式表,而不是链接以这种方式

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

使用attr特殊属性,与您的构建形式的add行动,你必须使用资产。
你可以找到更多的资产here

要与资产工作,你需要做的:

  • 创建CSS文件
  • assets:install安装您的资产(我建议使用--symlink选项会反映css的变化,除非它们被缓存)
  • 通过在你的模板中使用它来享受你的CSS。在树枝的情况下,你已经做< link href="{{ asset('bundles/acmebundle/css/style.css') }}" type="text/css" rel="stylesheet">(其中acmebundle是你的包)
相关问题