gpt4 book ai didi

php - FosRestBundle PATCH 操作 + 具有 NotBlank 约束的实体字段

转载 作者:搜寻专家 更新时间:2023-10-31 21:25:52 25 4
gpt4 key购买 nike

我有一个 Dns 实体,它有一个带有 NotBlank 约束的 content 字段

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

/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
* @Assert\Regex("/^(([[:alnum:]-_]+(\.[[:alnum:]-_]+)*)|(\*))$/u")
*/
private $name;

/**
* @var string
*
* @ORM\Column(name="content", type="string", length=64000, nullable=true)
* @Assert\NotBlank
* @Assert\Length(max="64000")
*/
private $content;

我用 FosRestBundle 做了一个有效的 PATCH Action

/**
* @ParamConverter("updatedRecord", converter="fos_rest.request_body")
*/
public function patchAction(PowerDNSDomain $domain, PowerDNSRecord $record, PowerDNSRecord $updatedRecord, ConstraintViolationListInterface $validationErrors)
{
if ($validationErrors->count() > 0) {
return $this->handleBodyValidationErrorsView($validationErrors);
}

$record->setName($updatedRecord->getName())
->setContent($updatedRecord->getContent())
->setTtl($updatedRecord->getTtl())
->setPrio($updatedRecord->getPrio());

$this->get('manager.dns')->saveRecord($record);

return $this->view($record);
}

当我尝试在不更改 content 字段的情况下更新 Dns 条目时,由于我的 NotBlank 约束,我收到以下错误。

{ "error": "validation_failed", "error_description": "Data validation failed. Please check errors below.", "validation_errors": { "content": [ "This value cannot be null." ] } }

这与 NotNull 约束相同。

我正在尝试在不更改 content 字段的情况下修补 Dns 条目。

这是否可以将我的约束保留在实体内,或者我必须使用其他方式?

最佳答案

你可以处理validation groups保持对 INSERT 的约束并在 UPDATE 上跳过它。

例子:

/**
* @var string
*
* @ORM\Column(name="content", type="string", length=64000, nullable=true)
* @Assert\NotBlank(groups={"new"})
* @Assert\Length(max="64000")
*/
private $content;

然后,如果您的方法正在创建一个新条目,请在 @ParamConverter 注释中设置 new 验证组:

/**
* @ParamConverter("updatedRecord", converter="fos_rest.request_body", options={"validator"={"groups"={"new"}}})
*/

参见 Request body listener更多。

关于php - FosRestBundle PATCH 操作 + 具有 NotBlank 约束的实体字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36284674/

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