2016-10-26 2 views
0

У меня есть две модели Entoty User and Location и I crate с двумя объектами и создайте форму для этой модели и добавьте validate_group для этой формы? но я проверяю, что форма действительна - форма всегда действительна, но сущность - это emthy, и сущность не утверждает пустые поля, что я делаю неправильно?Symfony form validate entity

лица

class User implements UserInterface, \JsonSerializable 
{ 
use GedmoTrait; 

/** 
* @var integer 
* 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* 
* @Assert\NotBlank(groups={"admin_user_post"}) 
* @ORM\Column(type="string", length=255, nullable=true) 
*/ 
private $firstName; 


class Location 
{ 
/** 
* @var integer 
* 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* 
* @Assert\NotBlank(groups={"admin_user_post"}) 
* @ORM\Column(type="string", length=255, nullable=true) 
*/ 
private $address; 

создают формы

class CreateUser extends AbstractType 
{ 
/** 
* @param FormBuilderInterface $builder 
* @param array    $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('user', new UserType(), ['validation_groups' => ['admin_user_post']]); 
    $builder->add('location', new LocationType(), ['validation_groups' => ['admin_user_post']]); 
} 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AdminBundle\Model\CreateUserModel', 
     'csrf_protection' => false, 
     'validation_groups' => ['admin_user_post']    
    )); 
} 

    /** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('firstName') 
} 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\User', 
     'csrf_protection' => false, 
     'validation_groups' => ['admin_user_post'] 
    )); 
} 

    /** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('address') 
     ->add('cityObject', null, array('attr' => array('placeholder' => 'Select city'))); 
} 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\Location', 
     'csrf_protection' => false, 
     'validation_groups' => ['admin_user_post'] 
    )); 
} 

и действия

 $entity = new CreateUserModel(); 

    $form = $this->createCreateForm($entity); 
    $form->handleRequest($request); 

    if ($form->isValid() 
     && $form->get('user')->isValid() 
     && $form->get('location')->isValid() 
    ) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($entity->getLocation()); 
     $entity->getUser()->setLocation($entity->getLocation()); 
     $em->persist($entity->getUser()); 
     $em->flush(); 
     $user = $entity->getUser(); 

     return $this->redirect($this->generateUrl('admin_users_show', array('id' => $user->getId()))); 
    } 

    /** 
* Creates a form to create a User entity. 
* 
* @param CreateUserModel $entity The entity 
* 
* @return \Symfony\Component\Form\Form The form 
*/ 
private function createCreateForm(CreateUserModel $entity) 
{ 
    $form = $this->createForm(new CreateUser(), $entity, array(
     'validation_groups' => ['admin_user_post'], 
     'action' => $this->generateUrl('admin_users_create'), 
     'method' => 'POST', 
    )); 

    $form->add('submit', 'submit', array('label' => 'Create')); 

    return $form; 
} 

Стараюсь в действии

$error = $this->get('validator')->validate($form->getData()->getUser(), ['admin_create_user']); 

, но все еще имеют пустые $error

Почему форма действительна? или как правильная модель действительной формы с моими сущностями и утверждать в этих сущностях?

ответ

1

Добавить в «CreateUser» формы «» cascade_validation опции для проверки вложенных форм, и проверить, что это метод аннотаций для ограничений было указан в config.yml

# app/config/config.yml 
framework: 
    validation: { enable_annotations: true }