【问题标题】:Laravel : Update input with empty valueLaravel:使用空值更新输入
【发布时间】:2021-05-10 19:53:23
【问题描述】:

我已经使用 Laravel 生成了一个 API

在我的控制器中,我有以下更新功能:

public function update(Request $request, $id)
{
    $data = Link::find($id);
    $data->title = is_null($request->title) ? $data->title : $request->title;

    $data->save();    
}

它验证如果接收到的输入为空,它返回默认值,否则它请求新的值的基本原理是什么一个。

这里的问题是,当我使用空值(例如 5 个空格字符)更新输入时,数据库中的输入不会收到新值,因为它认为 空格为空

我想到了一个解决方案,比如检查接收到的输入中的字符数。就像接收到的字符串是 小于 1 而不是 is_null 然后返回默认值。 对吗?

【问题讨论】:

  • '它认为空间为空'。这不是真的,Laravel 有一个 ConvertEmptyStringsToNull 中间件来删除空格。
  • @Daan 我明白了。那么在这种情况下如何接收空格。
  • 你禁用了中间件。
  • @Daan 仅在那个控制器中?如果我在其他地方需要它怎么办?
  • 中间件有一个except属性,你可以定义你想排除哪些路由。

标签: php laravel


【解决方案1】:

我所做的是修改了位于 Middleware 文件夹中的 TrimStrings.php,并添加了我想从该 Middleware 中排除的键,如下所示:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;

class TrimStrings extends Middleware
{
    /**
     * The names of the attributes that should not be trimmed.
     *
     * @var array
     */
    protected $except = [
        'password',
        'password_confirmation',
        'title',
        'description'
    ];
}

就像这些键不会使用 TrimStrings,因此它们可以接收空格作为值。

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 2021-04-08
    • 2015-05-04
    • 1970-01-01
    • 2020-10-18
    • 2014-05-29
    • 2021-10-09
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多