В классе администратора я использую 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 %}
<b>{% set type = type|default('text') %}</b>
<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" ...
. Тогда пользователи могут легко увеличивать и уменьшать процент, вместо того, чтобы вводить процент в поле.
Какой самый элегантный способ переопределить этот блок? Я не вижу возможности установить это в классе администратора, но если я ошибаюсь, пожалуйста, поправьте меня.
РЕДАКТИРОВАТЬ: В настоящее время у меня есть неудовлетворительное решение, где я скопировал form_admin_fields.html.twig
в templates/bundles/SonataAdminBundle/Form/
и отредактировал выделенную строку в {% set type = type|default(<b>'number'</b>) %}
.
Хотя в данный момент мне нужно, чтобы все поля ввода содержали процентное значение, равное type="number"
, было бы все же хорошо иметь возможность переключаться между number и text , т.е. сохранить исходный виджет формы. Я ищу элегантную, хорошую практику, решение.