【问题标题】:How to store large form in Laravel 6?如何在 Laravel 6 中存储大型表单?
【发布时间】:2020-01-12 10:11:05
【问题描述】:

我有一个大表单(约 150 个输入)和一个经典控制器(带有创建/存储方法)。我也在使用验证规则。

存储方式:

public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name'        => 'required|regex:/^[a-zA-Zа-яёА-ЯЁ]+$/u|min:2|max:50',
        'phone'       => 'required|digits_between:9,10',
        'description' => 'required|min:20|max:500',
    ]);
    if ($validator->fails()) {
        return redirect()->back()->withErrors($validator);
    }

    $request['created_by'] = Auth::user()->id;
    Profile::create($request->all());

    return redirect()->route('admin.profile.index');
}

在这种情况下,表单不存储任何数据...

当我尝试减少输入数字(从 150 到 30)时 - 数据已成功存储!

之后,我增加了“php_memory_limit”,“max_input_vars”等,但问题没有解决。

请帮助找到存储大型表单的最佳方式。

UPD:

表单存储成功,无需验证... 我试图只设置一个简单的规则 - “必需”,但问题并没有消失

【问题讨论】:

  • 您输入的大概大小是多少(以字节为单位)?
  • 你的模型里面有什么?
  • 你可以使用$request->validate([RULES])删除if ($validator->fails())
  • 您是遇到错误、白页还是只是返回而不保存?
  • @Rwd,不保存就返回

标签: php laravel laravel-6


【解决方案1】:
  • 您可以增加php.ini文件中的max_input_vars

  • 或更改您的 UI 并在多个页面上拆分输入

【讨论】:

  • 正如我所提到的,我做到了。现在 max_input_vars = 10000
  • @Eugene 你能更改输入并将其拆分为多个部分吗?
  • 很遗憾没有
【解决方案2】:

这很奇怪,但是当我改变时出现了问题

return redirect()->back()->withErrors($validator);

return redirect()->back()->withErrors($validator->messages());

【讨论】:

    猜你喜欢
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多