删除 FOSUserBundle 错误信息
Delete FOSUserBundle error messages
我正在尝试从我的表单中删除通用 FOSUserBundle 消息。
这是我出错时的结果:
我想删除红色方块中的消息。
如您所见,我成功地添加了我自己的错误消息。
我查了很多其他论坛都没有成功。
这是我的代码:
app/MDBUserBundle/views/Registration/register_content.html(我覆盖了注册表)
{% trans_default_domain 'FOSUserBundle' %}
<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>
在MDB/USerBundle/Type/RegistrationFormType.php
<?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';
}
}
?>
在MDB/UserBundle/Validator/Constraints
ContainsUser.php
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);
}
}
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)
);
}}}
- 在MDN.UserBundle
MDBUserBundle.php
<?php
namespace MDB\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MDBUserBundle extends Bundle {
public function getParent()
{
return 'FOSUserBundle';
}
}
- 在MDB/UserBundle/Ressources/config
validation.xml
<?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.yml
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 }
因此,如果您有删除这些消息的想法,那就太好了:)
提前致谢
我认为您的约束与用户名的原始 FOSUserBundle 约束相同。您可能对 Symfony 经验不多,并且不知道它默认禁用 translation component。
所有包的翻译文件都采用点符号 (fos_user.username.already_exist
)。您可以覆盖现有的翻译文件或使用您的语言环境添加新文件。在该文件中,您可以为所有约束设置所有消息。
如果您想禁用某些约束,您需要覆盖默认 validation
文件。
我正在尝试从我的表单中删除通用 FOSUserBundle 消息。
这是我出错时的结果:
我想删除红色方块中的消息。 如您所见,我成功地添加了我自己的错误消息。
我查了很多其他论坛都没有成功。
这是我的代码:
app/MDBUserBundle/views/Registration/register_content.html(我覆盖了注册表)
{% trans_default_domain 'FOSUserBundle' %}
<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>
在MDB/USerBundle/Type/RegistrationFormType.php
<?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'; } } ?>
在MDB/UserBundle/Validator/Constraints
ContainsUser.php
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);
}
}
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)
);
}}}
- 在MDN.UserBundle
MDBUserBundle.php
<?php
namespace MDB\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MDBUserBundle extends Bundle {
public function getParent()
{
return 'FOSUserBundle';
}
}
- 在MDB/UserBundle/Ressources/config
validation.xml
<?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.yml
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 }
因此,如果您有删除这些消息的想法,那就太好了:)
提前致谢
我认为您的约束与用户名的原始 FOSUserBundle 约束相同。您可能对 Symfony 经验不多,并且不知道它默认禁用 translation component。
所有包的翻译文件都采用点符号 (fos_user.username.already_exist
)。您可以覆盖现有的翻译文件或使用您的语言环境添加新文件。在该文件中,您可以为所有约束设置所有消息。
如果您想禁用某些约束,您需要覆盖默认 validation
文件。