First problem: i want to add Generate
password button under password text input.
code:
class UserAdmin extends AbstractAdmin
{
...
protected function configureFormFields(FormMapper $formMapper) :void
{
if ($this->getFormAction() == 'create')
$formMapper
->add('email')
->add('plainPassword', TextType::class);
$formMapper->add('enabled');
...
I tried to include ButtonType and add ->add('button', ButtonType::class);
after plainPassword
input but i got error:
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".
Other try by add button in twig: in 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 %}
but button show above the form and won't be easy to handle the action since i use vue:
Second problem: i use this password-generator lib i want when i click Generate
button ^ the value of plainPassword
input changes to new password every each click. here is code:
class UserAdminCRUDController extends Controller
{
....
public function generatePassword()
{
$generator = new ComputerPasswordGenerator();
$generator
->setUppercase()
->setLowercase()
->setNumbers()
->setSymbols(true)
->setLength(9);
return $generator->generatePasswords(1);
}
....