特质中的类约束不起作用

时间:2017-03-23 11:13:48

标签: symfony validation constraints traits

我有一个简单的实体类型“城市”

class City
{

    use GeoTrait;

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

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255)
     */
    private $title;

    ...

}

你可以看到它使用Trait,看起来像这样

use AppBundle\Validator\Constraint as AppConstraint;

/**
 * @AppConstraint\IsDuplicateLocation
 * @AppConstraint\IsLocation
 */
trait GeoTrait
{
         /**
    * @var string
    *
    * @ORM\Column(name="geoLat", type="decimal", nullable = true, precision=9, scale=6)
    */
   private $geoLat;
   /**
    * @var string
    *
    * @ORM\Column(name="geoLng", type="decimal", nullable = true, precision=9, scale=6)
    */
   private $geoLng;
}

现在,如果我创建一个新实体并尝试使用验证器服务对其进行虚拟化,那么它似乎不会验证我的自定义类约束。

如果我向特征添加字段约束,则验证工作正常,但不适用于类约束。为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

Trait不是类,因此您无法在自定义Constraint“getTargets()”方法中将其作为目标。

尝试将您的类约束添加到City类

/**
* @AppConstraint\IsDuplicateLocation
* @AppConstraint\IsLocation
*/
class City
{
    ...
}