【问题标题】:symfony 2 formbuilder entity error validationsymfony 2 formbuilder实体错误验证
【发布时间】:2014-09-30 15:04:21
【问题描述】:

我用

构建了一个表单
$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"). 

编辑:这已经修复了删除 ~ 波浪号的问题,就像 Rooneyl 已经告诉我的那样(见评论)

如何在表单中实现该字段的验证?

编辑:我猜这有点复杂。

有两个实体。用户和例如地点。

用户实体包含

    /**
 * @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 中的菜鸟)。

我只想强制管理员在表单中创建的每个用户处为每个用户设置用户组。

【问题讨论】:

  • 删除 tilda (~),因为您正在更改验证

标签: validation symfony


【解决方案1】:

这将起作用:

Pr\UserBundle\Entity\User:
properties:
    locations:
        - NotBlank:
            message: { "You must select a location" } 

【讨论】:

  • 谢谢。我编辑了我的问题并提供了一些进一步的信息,因为我的问题有点粗略
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多