php - Laravel 表单验证问题( session 大小限制?)

标签 php laravel validation xampp

我有一个包含大约 30 个应该验证的输入的表单。这是全新的 Laravel 安装,我在 Controller 中处理验证。这是一个简单的项目,所有内容基本上都来自 Laravel 文档,因此在代码本身方面没有太多可向您展示。

这个问题与失败字段的数量或规则的数量有关,但我无法理解。

如果我在没有填写任何输入字段的情况下提交表单,验证将失败并且我被重定向回表单,但没有验证错误或旧的输入数据。
同样的事情,如果我填写一个输入然后提交,我会被重定向回来,没有错误或我填写的输入的旧值。

然而,

  • 如果我填写 7 个输入字段并提交,则一切正常。重定向后,这 7 个字段具有旧值,其余字段具有错误消息。
  • 如果我从验证规则数组中注释掉 7 条规则,它的工作方式显然与上面相同。
  • 如果我使用 Validator::make并手动重定向回并使用 ->withErrors($validator) ,错误显示在表单中。同样的方式,如果我使用 ->withInput()在重定向时,表单将包含所有旧数据。但是,同时使用这两者,不会返回错误或旧数据返回表单。

  • 发生此问题时,调试栏显示array:2 [ "old" => [] "new" => [] ]_flash并且 session 似乎没有 errors_old_input完全定义。

    这是 100% 一致的,因此无论我填写或注释哪些规则或字段,这绝对是导致它的数量。

    它与两者同时发生$request->validate($myRules);$v = Validator::make($request->all(), $myRules);
    关于这种行为,我还没有从谷歌找到太多。以防万一,我已将 session 驱动程序更改为 file ,但这没有帮助。

    我目前正在 XAMP 上运行。 ( memory_limit=512M )

    编辑 :

    我的最终验证逻辑涉及一些“if-situations”,例如:
    $v->sometimes('description', 'required|max:500', function ($input){
        return $input->publish == 1;
    });
    

    现在,当我利用这些情况时,我注意到它们实际上减少了我问题的粗略“限制”。因此,通过添加这个单个有时条件并删除 description来自主规则数组的规则,我只需要再填充 6 个字段即可使一切正常。

    最后表单肯定会为输入设置必需的属性,所以这个问题不会在现实生活中发生,但它仍然让我很恼火,因为一定有什么原因导致了这个,后来它也可能会导致其他问题.

    编辑 2 :

    我做了一个新表单,有 22 个输入,并用逻辑命名它们:f1、f2、f3 等等,它完美地工作!

    但是用更长的名称更新了其中的一些,例如:f1、f2long、f3、f4evenlonger 等,突然问题又回来了。然后我再次删除了几个字符,并找到了一个有时有效有时无效的地方。

    如果输入字段的名称有 57 个字符 总计 , 一切正常 100%。如果我添加几个字符并且这个数字变为 63,它会变得不稳定并且有时会起作用 - 有时不会。如果总共有 70 个或更多字符,它永远不会工作。

    很明显有些东西限制了它,但什么?

    编辑3 :

    嗯,这是 session 大小限制..该死的花了很长时间才意识到这一点。

    我将"file"定义为 session 驱动程序,但它没有在它应该生成的位置生成任何文件,因此它显然仍在使用“cookie”。
    我给了 Win10 用户在存储文件夹(和子文件夹)中写入文件的权限,但它仍然不会在那里生成任何内容。

    最佳答案

    最后它发生是因为 session 数据不适合 cookie。经过长时间的调试(我确定问题完全出在其他地方)我将 session 驱动程序更改为 filesession.php ,但忘记更新 .env ..

    所以现在一切正常,通过使用 file和/或 database作为 session 驱动程序。

    关于php - Laravel 表单验证问题( session 大小限制?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59785406/

    相关文章:

    php - 为什么 laravel 返回类不存在错误?然而一切似乎都很好

    php - 根据下拉列表选择从数据库填充另一个选择下拉列表

    php - MySQL子查询拉取多个结果

    php - 有效地计算在 php 中返回的结果

    php - Laravel Eloquent 在 belongsToMany 关系上返回一个空集合

    javascript - JQuery:表单验证插件 - 验证特定字符串?

    laravel - 检测 Eloquent Updated 事件期间的特定更改

    php - 错误 405(不允许的方法)Laravel 5

    validation - 使用 Backbone "set"将 validate 设置为默认值 true

    javascript - 带有自定义验证无限循环的选择元素数组上的 jQuery 验证器