我有一个包含大约 30 个输入的表单,应该进行验证。这是非常新鲜的 Laravel 安装,我在控制器中处理验证。这是一个简单的项目,所有内容基本上都来自 Laravel 文档,所以当涉及到代码本身时,没有太多可以向您展示的内容。这个问题与失败字段的数量或规则的数量有关,但我无法理解它。如果我在未填写任何输入字段的情况下提交表单,验证将失败,我会被重定向回表单,但没有验证错误或旧输入数据。如果我填写一个输入然后提交,同样的事情,我被重定向回来,没有错误或我填写的输入的旧值。然而,如果我填写 7 个输入字段并提交,一切正常。重定向后,这 7 个字段有旧值,其余有错误消息。如果我从验证规则数组中注释掉 7 条规则,显然它的工作方式与上述相同。如果我使用Validator::make并手动重新定向并使用->withErrors($validator),则错误会显示在表单中。同样,如果我->withInput()在重定向上使用,表单将包含所有旧数据。但是,将这两者结合使用,既不会返回错误,也不会返回旧数据。发生此问题时,调试栏显示 array:2 [ "old" => [] "new" => [] ]和_flash会话似乎根本没有errors或没有_old_input定义。这是 100% 一致的,所以无论我填写或注释哪些规则或字段,这绝对是导致它的数量。它与两者一致地 $request->validate($myRules);发生 $v = Validator::make($request->all(), $myRules);关于这种行为,我没有从谷歌那里找到太多。以防万一,我已将会话驱动程序更改为file,但这没有帮助。我目前正在 XAMP 上运行。( memory_limit=512M)编辑:我的最终验证逻辑涉及一些“如果情况”,例如:$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:嗯,这是会话大小限制.. 该死的花了很长时间才意识到它。我将“文件”定义为会话驱动程序,但它不会在应有的位置生成任何文件,因此它显然仍在使用“cookie”。我授予 Win10 用户在存储文件夹(和子文件夹)中写入文件的权限,但它仍然不会在那里生成任何内容。
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
最后它发生了,因为会话数据不适合 cookie。经过长时间调试(我确信问题完全出在其他地方)我将会话驱动程序更改为file
inside session.php
,但忘记更新.env
..
所以现在一切正常,通过使用file
和/或database
作为会话驱动程序。
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消