Symfony 删除FOSUserBundle错误消息
我正试图从我的表单中删除通用的FOSUserBundle消息 这是我出错时的结果: 我想删除红场上的消息。 正如你所看到的,我成功地发布了我自己的错误消息 我查看了大量其他论坛,但没有成功 这是我的密码:Symfony 删除FOSUserBundle错误消息,symfony,twig,fosuserbundle,Symfony,Twig,Fosuserbundle,我正试图从我的表单中删除通用的FOSUserBundle消息 这是我出错时的结果: 我想删除红场上的消息。 正如你所看到的,我成功地发布了我自己的错误消息 我查看了大量其他论坛,但没有成功 这是我的密码: app/MDBUserBundle/views/Registration/register\u content.html(我覆盖了注册表表单) ContainsUserValidator.php <?php namespace MDB\UserBundle\Validator\C
- app/MDBUserBundle/views/Registration/register\u content.html(我覆盖了注册表表单)
ContainsUserValidator.php
因此,如果您有删除这些消息的想法,那就太好了:)<?php namespace MDB\UserBundle\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; class ContainsUserValidator extends ConstraintValidator { protected $em; public function __construct(\Doctrine\ORM\EntityManager $em) { $this->em = $em; } public function validate($value, Constraint $constraint) { $repository = $this->em->getRepository('MDBUserBundle:User'); $user = $repository->findOneByUsername($value); if ($user) { $this->context->addViolation( $constraint->message, array('%string%' => $value) ); }}}
提前感谢我认为您的约束与用户名的原始FOSUserBundle约束相同。您可能对Symfony没有什么经验,也不知道它在默认情况下已被禁用 所有捆绑包的翻译文件都采用点符号(
)。您可以覆盖现有的翻译文件或使用您的语言环境添加新的翻译文件。在该文件中,您可以为所有约束设置所有消息fos\u user.username.ready\u existed
如果你想禁用一些约束,你需要覆盖默认的
文件。谢谢你,它工作起来很有魅力。确实,我对这个框架有一个小小的体验^^^^^再次谢谢验证
<div class="form-group"> <label for={{ form.username.vars.id }}>Pseudo</label> {{ form_widget(form.username,{'attr': {'class': 'form-control' , 'placeholder':'Entrez votre pseudo'}}) }} {{ form_errors(form.username) }} </div> <div class="form-group"> <label for={{ form.email.vars.id }}>Adresse e-mail</label> {{ form_widget(form.email , {'attr': {'class': 'form-control' , 'placeholder':'Entrez votre adresse mail'}}) }} {{ form_errors(form.email) }} </div> <div class="form-group"> <label for={{ form.plainPassword.first.vars.id }}>Mot de passe</label> {{ form_widget(form.plainPassword.first,{'attr': {'class': 'form-control' , 'placeholder':'Entrez votre mot de passe'}}) }} {{ form_errors(form.plainPassword.first) }} </div> <div class="form-group"> <label for={{ form.plainPassword.second.vars.id }}>Confirmation du mot de passe</label> {{ form_widget(form.plainPassword.second,{'attr': {'class': 'form-control' , 'placeholder':'Confirmez votre mot de passe'}}) }} </div> {{ form_rest(form) }} <div> <input type="submit" class="btn btn-default" value="Enregistrer" /> </div> </form> </div>
<?php namespace MDB\UserBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class RegistrationFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); // Ajoutez vos champs ici, revoilà notre champ *location* : } public function getParent() { return 'fos_user_registration'; } public function getName() { return 'mdb_user_registration'; } } ?>
namespace MDB\UserBundle\Validator\Constraints; use Symfony\Component\Validator\Constraint; /** * @Annotation */ class ContainsUser extends Constraint { public $message = 'L\'utilisateur "%string%" exist déja.'; public function validatedBy() { return 'contains_user'; } public function getTargets() { return array(self::CLASS_CONSTRAINT, self::PROPERTY_CONSTRAINT); } }
<?php namespace MDB\UserBundle\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; class ContainsUserValidator extends ConstraintValidator { protected $em; public function __construct(\Doctrine\ORM\EntityManager $em) { $this->em = $em; } public function validate($value, Constraint $constraint) { $repository = $this->em->getRepository('MDBUserBundle:User'); $user = $repository->findOneByUsername($value); if ($user) { $this->context->addViolation( $constraint->message, array('%string%' => $value) ); }}}
<?php namespace MDB\UserBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class MDBUserBundle extends Bundle { public function getParent() { return 'FOSUserBundle'; } }
<?xml version="1.0" ?> <constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> <class name="FOS\UserBundle\Model\User"> <property name="username"> <constraint name="NotBlank"> <option name="message">fos_user.username.blank</option> <option name="groups"> <value>Registration</value> <value>Profile</value> </option> </constraint> <constraint name="MDB\UserBundle\Validator\Constraints\ContainsUser"> <option name="groups"> <value>Registration</value> <value>Profile</value> </option> </constraint> <constraint name="Length"> <option name="min">4</option> <option name="minMessage">fos_user.username.short</option> <option name="max">20</option> <option name="maxMessage">fos_user.username.long</option> <option name="groups"> <value>Registration</value> <value>Profile</value> </option> </constraint> </property> </class> </constraint-mapping>
services: mdb_user.registration.form.type: class: MDB\UserBundle\Form\Type\RegistrationFormType tags: - { name: form.type, alias: mdb_user_registration } mdb.user.validator.contains_user: class: MDB\UserBundle\Validator\Constraints\ContainsUserValidator arguments: [ "@doctrine.orm.entity_manager" ] tags: - { name: validator.constraint_validator, alias: contains_user } mdb_user.registration_complet: class: MDB\UserBundle\EventListener\RegistrationConfirmListener arguments: ["@router"] tags: - { name: kernel.event_subscriber }