gpt4 book ai didi

php - 在 Symfony 2 中验证没有形式的实体

转载 作者:IT王子 更新时间:2023-10-29 00:53:39 26 4
gpt4 key购买 nike

我正在为 Symfony 2 创建一个 REST API Controller 。我开始使用 SensioGeneratorBundle 创建一个 CRUD 并修改 Controller 以充当 REST Controller 。但是,我没有表格,所以我正在考虑删除这部分。

如何在没有表单的情况下验证我的字段?一切都与表单相关联,我想要一些自由,包括自定义字段名称。例如,POST x 和 y 字段被 Symfony 解释为标题和内容。

最佳答案

诚然,表单与验证没有直接关系。让我解释一下。

表单组件负责映射从客户端收到的数据,无论是 GET 还是 POST 数据。因此,它将字符串映射到您的代码对象(如果不绑定(bind)到实体,则可以是数组)。

在数据映射到实体后,表单使用验证器组件来验证实体。这意味着实体的验证与表单组件完全分离。因此,当表单被验证时,这实际上意味着表单组件验证了您的实体而不是表单数据。验证的是实体,而不是表单。

该表单仅用于获取字符串表示并将其映射到实体层次结构。文档将此反射(reflect)为 FormValidation是 symfony 的不同部分 book .

也就是说,这也意味着实体的验证可以在表单组件之外轻松完成。您将约束定义为注释或在外部文件(yml、php 或 xml)中,并使用验证器组件来验证您的实体。这里的代码示例取自 Validation本书部分:

use Symfony\Component\HttpFoundation\Response;
use Acme\BlogBundle\Entity\Author;
// ...

public function indexAction()
{
$author = new Author();
// ... do something to the $author object

$validator = $this->get('validator');
$errors = $validator->validate($author);

if (count($errors) > 0) {
return new Response(print_r($errors, true));
} else {
return new Response('The author is valid! Yes!');
}
}

如您所见,这里没有涉及任何形式,只有一个对象和验证器服务。此外,Symfony2 的验证组件是完全独立的。这意味着您可以在没有整个框架的情况下使用它。也就是说,当单独使用时,您会失去与其他东西的良好集成。

这样,您的 REST 服务接收参数,从中创建实体并使用验证器服务来验证它们的完整性。使用表单不是验证实体所必需的。

关于php - 在 Symfony 2 中验证没有形式的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com