Symfony 2 Doctrime 2 et valider ( champ unique )
Bonjour, j'ai un petit problème. Je n'ai jamais fait de validateur de formulaire dans sf2, donc je ne sais pas par où je dois commencer. J'ai un champ 'nom d'utilisateur' et il est unique dans la base de données alors comment puis-je l'essayer?
Mon Code :
-> ENTITÉ
/**
* @var string $nick_allegro
*
* @ORM\Column(name="nick_allegro", type="string", length=255, unique=true, nullable=true)
*/
private $nick_allegro;
-> FORMULAIRE
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('nick_allegro')
;
}
public function getDefaultOptions(array $options) {
return array(
'data_class' => 'My\FrontendBundle\Entity\Licence',
);
}
-> Contrôleur
/**
* Displays a form to create a new Licence entity.
*
* @Route("/new", name="licence_new")
* @Template()
*/
public function newAction()
{
$entity = new Licence();
$form = $this->createForm(new LicenceType(), $entity);
return array(
'entity' => $entity,
'form' => $form->createView()
);
}
/**
* Creates a new Licence entity.
*
* @Route("/create", name="licence_create")
* @Method("post")
* @Template("MyFrontendBundle:Licence:new.html.twig")
*/
public function createAction()
{
$entity = new Licence();
$request = $this->getRequest();
$form = $this->createForm(new LicenceType(), $entity);
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('licence_show', array('id' => $entity->getId())));
}
return array(
'entity' => $entity,
'form' => $form->createView()
);
}
-> Afficher
<form action="{{ path('licence_create') }}" method="post" {{
form_enctype(form) }}>
{{ form_widget(form) }}
<p>
<button type="submit">Create</button>
</p> </form>
Symfony2 o 2.1? Cependant, à mon avis, vous devriez lire le chapitre de la doc officielle. Vous question n'est pas si précis, on devrait répondre à propos de formes, de contrôleurs, de personnalisation du formulaire, de la validation et ainsi de suite.
OriginalL'auteur Micchaleq | 2012-09-08
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser Entité Unique dans symfony, afin de valider qu'un champ particulier dans un modèle est unique.
Pour vous aider un peu (si vous avez un champ appelé
nick
):1/Dans votre entité
De Validation de directement prendre effet comme vous l'avez affirmé les contraintes de votre entité..
Par conséquent, vous pouvez déjà vérifier la validaiton dans votre contrôleur.
2/Dans votre contrôleur
Dans votre question, vous mentionnez le domaine
username
. Le champ doit être uniqueusername
ounick
? Je voudrais éviter denullable = true
dans ce casMerci pour l'aide, le var n'est jamais à l'esprit, est vraiment "pseudo-allegro'. Je roseau de la documentation et de rien. Mon symfony est 2.0.10. J'ai ajouté unique au sein de l'entité et j'ai généré un crud donc tout ce qui devaient être ok, mais j'obtiens l'erreur sql : 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry' une idée?
Je ne peux pas faire grand chose avec cette erreur @Micchaleq. Nous aurions besoin de voir le code..
J'ai collé mon code. Ehh vous remercie pour l'aide, im aveugle 🙁 j'oublie @UniqueEntity("pseudo"), et l'utilisation de la classe. Sory de problème
OriginalL'auteur Mick
C'est très simple. Suffit d'ajouter dans le fichier de l'Entité
@ORM\Column this "unique=true"
Exemple:
OriginalL'auteur Ксеня Грабевник
Garder à l'esprit que la gestion des formulaires dans sf2.1 un peu changé, alors assurez-vous de vérifier le droit de documentation:
La Validation se fait de plusieurs façons, entre autres, avec des annotations sur les champs d'entité, et dans votre cas, vous avez besoin de la
UniqueEntity
annotation.Être sûr de vérifier tous les symfony2 docs en ligne parce que c'est la meilleure façon d'entrer dans l'affaire.
OriginalL'auteur moonwave99