Переопределить виджет формы для процентного типа - PullRequest
0 голосов
/ 25 марта 2019

В классе администратора я использую 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 , т.е. сохранить исходный виджет формы. Я ищу элегантную, хорошую практику, решение.

...