我使用
构建表单$form = $this->createFormBuilder($user)
->add('locations', 'entity', array('class' =>'PrUserBundle:Location',
'property' => 'name',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.client_id = :client_id')
->setParameter('client_id', $this->clientId)
->orderBy('u.name', 'ASC');
},'required' => true, 'multiple' => true, 'expanded' => true)
)
提交后,我想验证表格。这是由validation.yml
完成的Pr\UserBundle\Entity\User:
properties:
usergroups:
- NotBlank: ~
message: You must select a location
我只收到错误
Unable to parse at line 15 (near " message: You must select a location").
如何在表单中实现此字段的验证?
编辑:我猜它有点复杂。
有两个实体。用户和例如地点。
用户实体包含
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer", nullable=true)
*/
protected $client;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $client_id;
/**
* @ORM\Column(type="string", length=16383, nullable=true) //16383 = max varchar utf8
*/
private $imageurl;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $firstname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $lastname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $emailalert;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $phone;
/**
* @ORM\Column(type="integer", nullable = true)
*/
protected $lock_state;
/**
* @ORM\Column(type="array", nullable=true)
*/
private $locations;
/**
* @ORM\Column(type="array", nullable=true)
*/
private $usergroups;
/**
* @ORM\Column(type="string", length=5, options={"fixed" = true, "default" = "de_DE"})
*/
private $locale = 'de_DE';
/**
* @ORM\Column(type="string", length=32)
*/
private $timezone = 'UTC';
/ ** * @ORM \ Column(type =“array”,nullable = true)
*/
private $created='1';
对于所有这些领域,我可以进行验证。但对于现场“位置”,我没有得到验证。这将是来自实体“位置”的数据,如下所示:
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @ORM\Column(type="string", length=20)
*/
public $name; //Raumbezeichnung, Ausgabelinie-Bezeichnung, Freitextbezeichnung, Standortname
/**
* @ORM\Column(type="integer")
*/
public $type;
/**
* @ORM\Column(type="string", length=20)
*/
public $parentLocation;
/**
* @ORM\Column(type="integer", nullable=true)
*/
public $parentlocation_id;
/**
* @ORM\Column(type="integer", nullable=true)
*/
public $client;
/**
* @ORM\Column(type="integer")
*/
public $client_id;
我不知道我是否可以通过实体中的many2many连接来显示它,但实际上我曾经按照上面描述的方式(我现在是symfony中的菜鸟)。
我只想强制管理员为每个用户在表单中创建的用户组设置用户组。
答案 0 :(得分:1)
这将有效:
Pr\UserBundle\Entity\User:
properties:
locations:
- NotBlank:
message: { "You must select a location" }