0

我想自动创建用户并生成密码。我正在使用自定义表单类来显示名字、姓氏和电子邮件字段。用户名是根据电子邮件创建的,这没有问题。但是,在保存新用户时,我不能跳过密码验证并实现密码生成。

我应该创建自定义 validator.xml

原文如下:

<?xml version="1.0" encoding="UTF-8" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <parameters>
        <parameter key="fos_user.validator.password.class">FOS\UserBundle\Validator\PasswordValidator</parameter>
        <parameter key="fos_user.validator.unique.class">FOS\UserBundle\Validator\UniqueValidator</parameter>
    </parameters>

    <services>
        <service id="fos_user.validator.initializer" class="FOS\UserBundle\Validator\Initializer" public="false">
            <tag name="validator.initializer" />
            <argument type="service" id="fos_user.user_manager" />
        </service>
    </services>

</container>

我看到这里fos_user.validator.password.class,也许我应该把自定义类放在这里

好的,我接近解决方案,使用 validator.xml 我可以更改一些验证器,但我不知道如何将验证器更改NotBlankBlank. 尝试了这个片段但没有成功。

    <class name="Application\Sonata\UserBundle\Entity\User">

        <property name="plainPassword">
            <constraint name="Blank">
                <option name="groups">Registration</option>
            </constraint>
        </property>

    </class>
4

1 回答 1

0

似乎根本不可能重载已经定义的约束。出于这个原因,许多人建议使用验证组来控制这一点。当然,对于这个例子来说,这是一个坏主意,因为有许多验证规则需要复制粘贴到新组中。

出于这个原因,我决定为密码创建一些隐藏字段,并用一些随机值填充它,这些值将用于生成真实密码。

于 2012-08-28T14:54:46.103 回答