首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 4.2验证实体的空浮点型字段

问Symfony 4.2验证实体的空浮点型字段
EN

Stack Overflow用户
提问于 2019-03-11 21:12:59
回答 1查看 945关注 0票数 0

我正在尝试为具有string和float类型的表单编写验证器。如果我正在创建一个没有存储到数据库中的新对象,一切都会正常工作。但是,如果我正在编辑一个存储在数据库中的对象,并且我将字符串或浮点值设置为空,我会得到

代码语言:javascript
复制
Expected argument of type "float", null given at property path "price"

错误。

正在设置字符串字段的解决方法

代码语言:javascript
复制
'empty_data' => '',

或者创建这样的数据转换器

代码语言:javascript
复制
<?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;
    }
}

但这不能应用于浮点场。验证以前在数据库中有值的空浮点型字段的最佳解决方案是什么?

编辑:我找到了解决方案。问题出在实体设置器中。它只需要浮点型,所以我不得不将参数类型改为?浮点型。

EN

回答 1

Stack Overflow用户

发布于 2019-03-11 21:53:32

为什么不使用断言呢?首先,您需要安装注释

代码语言:javascript
复制
 composer require symfony/validator doctrine/annotations

当您想在实体上使用它时,导入它:

代码语言:javascript
复制
use Symfony\Component\Validator\Constraints as Assert;

这就是你必须如何使用实体的属性:

代码语言:javascript
复制
/**
 * @Assert\NotBlank
 * @Assert\Length(min=3)
 */
private $firstName;

以下是断言的一些示例:

代码语言:javascript
复制
* @Assert\Type(type="string")

* @Assert\Type(type="float")

* @Assert\NotBlank()

有关更多信息,请访问https://symfony.com/doc/current/validation.html#properties

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55102643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档