在symfony中添加生成密码按钮添加用户管理面板表单

时间:2018-04-08 20:28:48

标签: php forms symfony vue.js

第一个问题:我想在密码文字输入下添加Generate密码按钮。 enter image description here 代码:

class UserAdmin extends AbstractAdmin
{
    ...

    protected function configureFormFields(FormMapper $formMapper) :void
    {
        if ($this->getFormAction() == 'create')
            $formMapper
                ->add('email')
                ->add('plainPassword', TextType::class);

            $formMapper->add('enabled');
    ...

我尝试在->add('button', ButtonType::class);输入后包含ButtonType并添加plainPassword,但我收到错误:

  

选项" label_render"," property_path",   " sonata_field_description"不存在。定义的选项是:" attr",   " auto_initialize"," block_name","禁用","标签"," 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,所以很容易处理操作:enter image description here

第二个问题:我使用此password-generator lib,当我点击Generate按钮时,plainPassword输入的值每次点击都会更改为新密码。这是代码:

class UserAdminCRUDController extends Controller
{
    ....
    public function generatePassword()
    {
        $generator = new ComputerPasswordGenerator();

                $generator
                    ->setUppercase()
                    ->setLowercase()
                    ->setNumbers()
                    ->setSymbols(true)
                    ->setLength(9);

                return $generator->generatePasswords(1);
    }
    ....

0 个答案:

没有答案