覆盖表单控件的百分比类型

时间:2019-03-25 10:04:53

标签: symfony twig symfony-forms symfony4 sonata-admin

在管理类中,我像这样使用Symfony PercentType

use Symfony\Component\Form\Extension\Core\Type\PercentType;

class FooAdmin extends AbstractAdmin
{
    public function configureFormFields(FormMapper $formMapper)
    {
        $formMapper->add('myPercentField', PercentType::class, [
            'type' => 'integer',
        ]);
    }
}

此部分使用以下块进行渲染:

{% block percent_widget %}
    {% spaceless %}
        {% set type = type|default('text') %}
        <div class="input-group">
            {{ block('form_widget_simple') }}
            <span class="input-group-addon">%</span>
        </div>
        {{ block('sonata_help') }}
    {% endspaceless %}
{% endblock percent_widget %}

来自文件form_admin_fields.html.twig

但是,我要呈现类型为<input type="number" ...的输入。然后,用户可以轻松地增加或减少百分比,而无需在字段中输入百分比。

覆盖此块的最优雅的方法是什么?我看不到在admin类中进行设置的可能性,但是如果我错了,请说对了。

编辑:目前我有一个令人不满意的解决方案,我将form_admin_fields.html.twig复制到templates/bundles/SonataAdminBundle/Form/并将强调的行编辑到{% set type = type|default('number') %}

尽管目前我需要将所有包含百分比的输入字段都设为type="number",但可以选择在 number text 之间进行切换em>即保留原始表单小部件。我正在寻找一种优雅,好的实践解决方案。

0 个答案:

没有答案