【发布时间】:2014-12-31 02:29:57
【问题描述】:
所以在摆弄了一天之后,我感觉自己有点碰壁了,想得到一些指点。我的数据库中有一个相当普通的用户表,每个用户可以选择 2 个地址(一个用于计费,一个用于接收)。在我的表单中,这与表单模型绑定相当不错,我可以使用下面的 Blade 代码生成正确的字段:
{{ Form::text('billing[city]') }}
{{ Form::text('receiving[city]') }}
以类似的方式,我可以通过以下方式在控制器中看到结果:
$billing = $user->billing;
$billing->city = Input::get('billing.city');
$receiving = $user->receiving;
$receiving->city = Input::get('receiving.city');
现在我遇到的问题是,如果我分别保存所有 3 个模型,如 $user->save();、$billing->save(); 和 $receiving->save();,我将有 3 个单独的错误组。通常这会很好,因为我可以将它们合并到一个大的 MessageBag 中,但在这种情况下,任何一个地址中的任何错误都不会列出,如果它来自帐单地址或接收地址。相反,我的错误将只有键 city 而不是 billing.city,就像我希望的那样。
MessageBag 类似乎不支持为所有内容或类似内容添加前缀的方法,对我来说,在现有类中添加一个方法似乎并不明智,因为这会破坏我的错误如果我们决定在未来更新 Laravel。
任何类型的指针或帮助都将不胜感激,我主要使用这个项目来掌握 Laravel 的窍门,因此也非常欢迎采用完全不同的方法。
【问题讨论】:
-
在开始调用保存方法之前,您是否有理由不能一次性对所有输入使用验证类?
-
啊抱歉,我忘了提到我正在使用 Ardent 进行验证,所以调用 save() 也可以验证模型。尽管您确实提出了一个很好的观点,但事先验证将使我能够手动分离错误。我仍然很好奇是否有另一种方法来解决它,这样我就可以让我的验证以类似的方式运行:)。
标签: php forms validation laravel relationship