Первая проблема: Я хочу добавить кнопку пароля Generate под вводом текста пароля.
код:
class UserAdmin extends AbstractAdmin
{
...
protected function configureFormFields(FormMapper $formMapper) :void
{
if ($this->getFormAction() == 'create')
$formMapper
->add('email')
->add('plainPassword', TextType::class);
$formMapper->add('enabled');
...
Я попытался включить ButtonType и добавить ->add('button', ButtonType::class);
после ввода plainPassword, но получил ошибку:
The options "label_render", "property_path", "sonata_field_description" do not exist. Defined options are: "attr", "auto_initialize", "block_name", "disabled", "label", "label_format", "translation_domain".
Другой попробуйте, нажав кнопку добавления в ветке: в custom_edit.html.twig
{% extends 'SonataAdminBundle:CRUD:edit.html.twig' %}
{% block content %}
<button class = "btn btn-primary" id = "generate_password">Generate password</button>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src = "{{ asset('build/admin.js') }}"></script>
{% endblock %}
но кнопка отображается над формой, и обработать действие будет непросто, так как я использую vue: 
Вторая проблема: Я использую эту библиотеку генератор паролей, которую я хочу, когда я нажимаю кнопку Generate ^ значение ввода plainPassword изменяется на новый пароль при каждом нажатии. вот код:
class UserAdminCRUDController extends Controller
{
....
public function generatePassword()
{
$generator = new ComputerPasswordGenerator();
$generator
->setUppercase()
->setLowercase()
->setNumbers()
->setSymbols(true)
->setLength(9);
return $generator->generatePasswords(1);
}
....
Ваша проблема с кнопкой, описанной на github






Для начала прочтите про настройка рендеринга форм. А во-вторых, вы можете использовать ajax для отправки запроса на требуемое действие.