我正在尝试为具有string和float类型的表单编写验证器。如果我正在创建一个没有存储到数据库中的新对象,一切都会正常工作。但是,如果我正在编辑一个存储在数据库中的对象,并且我将字符串或浮点值设置为空,我会得到
Expected argument of type "float", null given at property path "price"错误。
正在设置字符串字段的解决方法
'empty_data' => '',或者创建这样的数据转换器
<?php
namespace App\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
class NullToEmptyTransformer implements DataTransformerInterface
{
/**
* Does not transform anything.
*
* @param string|null $value
*
* @return string
*/
public function transform($value)
{
return $value;
}
/**
* Transforms a null to an empty string.
*
* @param string $value
*
* @return string
*/
public function reverseTransform($value)
{
if (\is_null($value)) {
return '';
}
return $value;
}
}但这不能应用于浮点场。验证以前在数据库中有值的空浮点型字段的最佳解决方案是什么?
编辑:我找到了解决方案。问题出在实体设置器中。它只需要浮点型,所以我不得不将参数类型改为?浮点型。
发布于 2019-03-11 21:53:32
为什么不使用断言呢?首先,您需要安装注释
composer require symfony/validator doctrine/annotations当您想在实体上使用它时,导入它:
use Symfony\Component\Validator\Constraints as Assert;这就是你必须如何使用实体的属性:
/**
* @Assert\NotBlank
* @Assert\Length(min=3)
*/
private $firstName;以下是断言的一些示例:
* @Assert\Type(type="string")
* @Assert\Type(type="float")
* @Assert\NotBlank()有关更多信息,请访问https://symfony.com/doc/current/validation.html#properties
https://stackoverflow.com/questions/55102643
复制相似问题