Laravel - 当我使用访问器时,模型绑定不起作用

时间:2016-10-06 21:06:18

标签: laravel laravel-5.2 mutators

我想从Laravel IoC容器中填充我的选择框。

应用\ HTTP \公用事业\ BillingHelper.php

GitHub Logo http://i65.tinypic.com/2871i1.jpg

视图/计费/ create.blade.php

GitHub Logo http://i66.tinypic.com/2j4bjtw.jpg

视图/计费/ edit.blade.php

GitHub Logo http://i65.tinypic.com/2wq4imd.png

创建表格:

GitHub Logo http://i63.tinypic.com/258t9uf.png

现在,我想显示一些标志和货币符号,而不是值。

我应该使用mutators吗?

GitHub Logo http://i63.tinypic.com/2hn411s.png

问题

如果我使用mutators,当我打开编辑页面时,我总是看到从BillingHelper中选择的第一个值,而不是选择的那个。

GitHub Logo http://i63.tinypic.com/4g3wix.png GitHub Logo http://i63.tinypic.com/2ld7msi.png

有任何帮助吗?感谢。

3 个答案:

答案 0 :(得分:0)

我知道这应该是一个评论,但我没有声誉。

如果在您的编辑页面上,您使用$ client->语言和$ client->货币替换Form :: select上的null。

我知道您使用Form :: Model绑定值的区域。但值得一试。

答案 1 :(得分:0)

当您使用mutators时,匹配将不再发生。您必须根据您返回的值使用匹配的静态数组。 (旗帜)

如果你制作一个用于保存数据的变换器并再次简化为['它' en',' lv' ],否则你保存的数据会有所不同,最初的mutator第二次不会工作。您仍然可以进行一次性测试。

这就是原因:

您的表单绑定使用$ bill->语言来检索实际存储的数据,并将其与$ bill :: lang静态数组中的值进行比较。如果未找到匹配项,则始终会选择第一个值。

您可以在帐单迁移中提供货币和语言字段定义吗?

还可以从账单数据库中检索您的值,并将其粘贴到此处以获取语言和货币。它们必须位于已定义的静态集中。

答案 2 :(得分:0)

Laravel通过使用以下方法跳过访问器/更改器 $model->getOriginal('data_field')。 “ getOriginal()”获得模型的原始属性值。