【问题标题】:Is doctrine Entity validation enough?教义实体验证是否足够?
【发布时间】:2020-07-20 15:35:39
【问题描述】:

我有一个已经有约束的实体类:

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

/**
* @ORM\Column(type="integer")
*/
private $Y;

在我的控制器中,我从表单获取发布数据并在实体类上使用 setMethods:

$property = new PropertyEntity();
$property->setX($request->request->get('X'));
$property->setY($request->request->get('Y'));

下一步 - 保存到数据库。

我需要对发布数据进行额外验证吗?我虽然需要使用验证库,但我不确定它是否只会增加不必要的开销,因为“@ORM”已经是表单类型已经在进行一些验证。 任何一般的想法如何以及在哪里编写验证?(伪代码就足够了)

【问题讨论】:

  • 这里没有验证。
  • 您到底想验证什么?

标签: php forms symfony post doctrine


【解决方案1】:

好问题! ORM 映射将 PHP 类映射到原则元数据(模型)。 Assert 是一种验证从表单(视图/控制器)接收到的对象的机制。

这意味着您可以在不是实体的对象上使用断言,或者您不能在 formType 中使用映射字段

您可以在字段的注释中进行验证。示例:

/**
* @Assert\NotBlank
* @ORM\Column(type="string", length=255)
*/
private $X;
    
/**
* @Assert\NotBlank
* @ORM\Column(type="integer")
*/
private $Y;

不要忘记添加: 使用 Symfony\Component\Validator\Constraints 作为 Assert;

更多验证约束在此链接中: https://symfony.com/doc/current/validation.html#basic-constraints

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2018-01-27
    • 2015-09-02
    相关资源
    最近更新 更多