在管理类中,我像这样使用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>即保留原始表单小部件。我正在寻找一种优雅,好的实践解决方案。