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 を使用していくつかのバリデータを変更できますが、バリデータを .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 に答える