所以在摆弄了一天后,我觉得自己有点碰壁,想得到一些指示。我的数据库中有一个相当普通的用户表,每个用户可以选择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的支持,所以非常欢迎一种截然不同的方法。
答案 0 :(得分:0)
我对Ardent不熟悉,但也许关联地址和使用push应该保存一切将返回给你一个MessageBag包含所有的东西。
// Create User
$user = new User;
$user->name = Input::get('name');
$user->email = Input::get('email');
// Create addresses
$billing = $user->billing;
$billing->city = Input::get('billing.city');
$receiving = $user->receiving;
$receiving->city = Input::get('receiving.city');
$user->address()->associate($billing);
$user->address()->associate($receiving);
$user->push();