Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从FOSUserBundle重写sprip.xml文件_Php_Symfony_Propel_Fosuserbundle - Fatal编程技术网

Php 从FOSUserBundle重写sprip.xml文件

Php 从FOSUserBundle重写sprip.xml文件,php,symfony,propel,fosuserbundle,Php,Symfony,Propel,Fosuserbundle,我正在为我的项目扩展FOSUserBundle,但我不希望email字段是唯一的,因此扩展schema.xml以从xml中删除唯一标记,并相应地构建模型。但当我尝试注册时,它仍然会通过spreep.xml检查电子邮件的唯一性 <constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject"> <option name="fields">email_canonical</opti

我正在为我的项目扩展FOSUserBundle,但我不希望email字段是唯一的,因此扩展schema.xml以从xml中删除唯一标记,并相应地构建模型。但当我尝试注册时,它仍然会通过spreep.xml检查电子邮件的唯一性

<constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject">
    <option name="fields">email_canonical</option>
    <!-- PropelBundle does not support custom messages yet
    <option name="message">fos_user.email.already_used</option>-->
    <option name="groups">
        <value>Registration</value>
        <value>Profile</value>
    </option>
</constraint>
用户名\u规范 fos_用户。用户名。已使用--> 登记处 轮廓

<constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject">
    <option name="fields">email_canonical</option>
    <!-- PropelBundle does not support custom messages yet
    <option name="message">fos_user.email.already_used</option>-->
    <option name="groups">
        <value>Registration</value>
        <value>Profile</value>
    </option>
</constraint>

有谁能帮我一下吗,我如何才能删除在spreep.xml中定义的唯一约束?我自己也在努力解决这个问题,但多亏了你发布问题的方式,我找到了一个解决方案

<constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject">
    <option name="fields">email_canonical</option>
    <!-- PropelBundle does not support custom messages yet
    <option name="message">fos_user.email.already_used</option>-->
    <option name="groups">
        <value>Registration</value>
        <value>Profile</value>
    </option>
</constraint>
关键是在您自己的bundle中扩展ValidationPass类&重写process方法。我还在resources>config>validation下将验证xml文件复制到我自己的包中,并使用了它们

<constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject">
    <option name="fields">email_canonical</option>
    <!-- PropelBundle does not support custom messages yet
    <option name="message">fos_user.email.already_used</option>-->
    <option name="groups">
        <value>Registration</value>
        <value>Profile</value>
    </option>
</constraint>
我所做的是:

<constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject">
    <option name="fields">email_canonical</option>
    <!-- PropelBundle does not support custom messages yet
    <option name="message">fos_user.email.already_used</option>-->
    <option name="groups">
        <value>Registration</value>
        <value>Profile</value>
    </option>
</constraint>
  • 在我的bundle(src/Example/ExampleBundle/ExampleBundle.php)中:定义构建方法并使用我自己的ValidatorPass类
  • 将验证文件复制到我自己的捆绑包中并对其进行了修改
  • 将ValidatorPass文件复制到我自己的包(src/Example/ExampleBundle/DependencyInjection/Compiler/ValidatorPass.php)
  • 在ValidatorPass过程方法中,我删除了FOSUserBundle xml文件,并添加了我自己的文件
  • 如果有什么不清楚,我可以更详细地说,但我认为这应该有助于你

    <constraint name="Propel\PropelBundle\Validator\Constraints\UniqueObject">
        <option name="fields">email_canonical</option>
        <!-- PropelBundle does not support custom messages yet
        <option name="message">fos_user.email.already_used</option>-->
        <option name="groups">
            <value>Registration</value>
            <value>Profile</value>
        </option>
    </constraint>