美文网首页
[041] Symfony4 表单验证 NULL 异常处理

[041] Symfony4 表单验证 NULL 异常处理

作者: 观星汉 | 来源:发表于2019-03-17 21:40 被阅读0次

在表单中, 某些字段允许为空的情况下, 有可能发生异常信息

Expected argument of type "string", "NULL" given at property path "name"
  • 这个情况是发生在 Form 的 handleRequest() 阶段, 表单的值并未进入验证步骤中.
  • 这个情况发生在给创建表单的对象中传入了实体类. 这个异常是由这个实体类发生的.

通常对于未填写值的表单, SF的Form会统一默认为 null, 由于这个原因, 由 make:entity 创建是实体类, 我们来看一下代码片段:

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;

        return $this;
    }

由于 Setter 方法的参数声明了需要接受 string 类型的参数, 然而 Form 给传入了一个 null, 所以抛出了异常. 问题发现了就比较好解决了.

  • 解决办法一: 修改实体类的函数定义, 使它能够接受 null 类型参数. 如下:
    public function setName(?string $name): self
    {
        $this->name = (string)$name;

        return $this;
    }

这PHP7.1版本之后, 函数的参数类型声明支持 可空类型 (在参数类型前增加一个问号?), 对于函数返回的结果类型也同样支持这一的声明.

  • 解决办法二: 修改创建 Form 时的属性, 给可选的或者会为空的表单自动添加一个默认空值(empty_data). 看起来像这样:
$formBuilder = $this->createFormBuilder($user);

//原来的表单声明
$formBuilder->add('name', TextType::class); 

//新的表单声明
$formBuilder->add('name', TextType::class, ['empty_data' => '']);

由于修改 Entity 代码比较麻烦, 建议使用方法二来处理此类问题会比较方便.

相关文章

  • [041] Symfony4 表单验证 NULL 异常处理

    在表单中, 某些字段允许为空的情况下, 有可能发生异常信息 这个情况是发生在 Form 的 handleReque...

  • 验证

    验证 表单请求验证类 必须 使用 表单请求 - FormRequest 类 来处理控制器里的表单验证。 验证类的 ...

  • Python Web框架 Django - 表单验证、路由反向解

    表单验证 逻辑处理,创建表单验证模块里的验证类,并将用户请求的POST对象,传入验证类进行验证,验证后获取验证通过...

  • js事件入门(4)

    4.表单事件 表单事件处理主要用来验证表单,可以处理用户在表单上所做的任何操作。 #4.1.onsubmit事件 ...

  • 表单验证

    表单验证:表单验证是一门处理在一个web表单里检查用户提供的信息是否正确的技术,表单验证意味着和用户的交流并引导他...

  • Future使用原则

    1. 异常处理 whenComplete((result,ex)-> { if(null != ex) { // ...

  • Angular

    Form 表单 在开始看angularjs如何处理表单前, 我们先想想处理表单时可能遇到的问题 如何数据绑定 验证...

  • js原生ajax表单验证

    主要说一下ajax表单验证的步骤 (1):创建ajax对象var oAjax = null; if(window....

  • 基于jQuery的表单验证插件

    常见表单验证实例非空长度正则关联验证,等 总结表单验证可公共化部分事件绑定错误提示输出数据处理(如trim,半角转...

  • (九)2表单验证

    (一)响应式表单校验最简单的控制器校验器语法。只能返回对象或null(null代表验证通过),返回值的key只能是...

网友评论

      本文标题:[041] Symfony4 表单验证 NULL 异常处理

      本文链接:https://www.haomeiwen.com/subject/aospmqtx.html