Symfony2自定义表单字段类型HTML5颜色

我想在Symfony2表单中添加HTML5颜色输入类型(目前仅由Chrome支持).
我创建了一个从文本类型继承的新颜色类型:

<?php

namespace Marquis\WebsiteBundle\Form\Type;

use Symfony\Component\Form\AbstractType;

class ColorType extends AbstractType
{
    public function getParent()
    {
        return 'text';
    }

    public function getName()
    {
        return 'color';
    }
}

?>

并创建了一个新服务来使用它:

marquis_website.form.type.color:
          class: Marquis\WebsiteBundle\Form\Type\ColorType
          tags:
              - { name: form.type, alias: color }

但是,当显示表单时,输入标记如下所示:

<input type="text" id="entity_hex" name="entity[hex]" value="#4D89BF">

所以它不是使用新的HTML5颜色输入而是使用文本输入.

有没有办法覆盖类型,所以它会显示type =“color”?

我还检查了fields.html.twig,这条线应该可以正常工作:

{% set type = type|default('text') %}

如果我将默认值(‘text’)更改为默认值(‘color’),则所有input type =“text”都将更改为type =“color”.

谢谢您的帮助,

最佳答案
您还必须为您的字段定义新的主题块

{% form_theme form _self %}

{% block color_widget %}
{% spaceless %}
    {% set type = 'color' %}
    {{ block('form_widget_simple') }}
{% endspaceless %}
{% endblock %}

More about custom form fields

More about custom form themes

转载注明原文:Symfony2自定义表单字段类型HTML5颜色 - 代码日志