2017-02-20 3 views
-1

J'utilise sonate 2.8 avec fos groupe d'utilisateurs, j'étend entité utilisateur et admin, et il woks everythings, sauf une validation du groupe d'utilisateurs.validation sonata du groupe d'utilisateurs ne fonctionne pas

Est-ce qu'une erreur en ligne empêchant l'envoi de données si un utilisateur n'a pas presque un groupe sélectionné est possible?

je l'ai déjà essayé avec

->add('groups', 'sonata_type_model', array(
        'expanded' => true, 
        'multiple' => true, 
        'required' => true 
       )) 

mais des œuvres deosn't

le problème apparaît dans tous les domaines avec relation plusieurs à un ou plusieurs à plusieurs, par exemple, j'ai une entité 2 paese, zone , avec

// paeseAdmin.php 

$formMapper 
     ->with('Zone') 
      ->add('name', 'text' , array('label'=>"Paese")) 
      ->add('zone','sonata_type_collection',array('by_reference' => false, 'required' => true,), array('edit' => 'inline','inline' => 'table', 'class' => 'test',)) 

     ->end() 
    ; 

// paese entity 
/** 
* @var Zona 
* @ORM\OneToMany(targetEntity="Zona", mappedBy="paesi" , orphanRemoval=true, cascade={"persist"}) 
* @ORM\OrderBy({"nome" = "ASC"}) 
*/ 
private $zone; 



// zona entity 
/** 
* @var Paese 
* @ORM\ManyToOne(targetEntity="Paese", inversedBy="zone") 
* @ORM\OrderBy({"nome" = "ASC"}) 
* @ORM\JoinColumn(name="paese_id", referencedColumnName="id") 
*/ 
private $paesi; 

des idées? merci

Répondre

0

Vous avez 'required' => false puis 'required' => true vous devez retirer une

supplémentaire de la sonate doc sur la collecte de type sonate

Définition de l'option « nécessaire » à true ne provoque pas une exigence d'au moins une entité enfant. Si l'option 'required' est définie sur false, tous les champs de formulaire imbriqués deviennent également inutiles.

Lorsque vous ajoutez required => true à un champ sonata_type_collection vous permettent seulement d'avoir les champs obligatoires du formulaire d'enfant.

+0

après rien enlevé changé –

+0

Si vous avez 'required => true' vous devriez être avoir une info-bulle apparaît vous indiquant que vous devez sélectionner un élément de la liste lorsque vous soumettez le formulaire.Au total, vous ne voulez probablement pas regarder https://github.com/sonata-project/SonataUserBundle il est fait pour intégrer FOSuser dans l'administration de sonata, donc il devrait vous faire économiser quelques problèmes – Mawcel

+0

j'ai sonatauserbundle, mais je la validation ne fonctionne toujours pas –

0

vous devez donc ajouter ces lignes dans votre entité utilisateur

use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Component\Validator\Context\ExecutionContextInterface; 


    /** 
    * @Assert\Callback(methods={"isGroupValid"}) 
    */ 
    public function isGroupValid(ExecutionContextInterface $context) 
    { 
     if ($this->groups->count()==0) { 
      $context 
       ->buildViolation('choisir au minimum un group!', array(), null) 
       ->atPath('groups') 
       ->addViolation()`enter code here`; 
     } 
    }