第一个问题:我想在密码文字输入下添加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');
...
我尝试在->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,所以很容易处理操作:
第二个问题:我使用此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);
}
....