我是Laravel的新手,正在构建一个简单的CRUD应用程序,以了解有关该框架的更多信息。我对正确使用访问器感到好奇。
我认为访问器非常适合格式化模型的属性以便在视图中显示,就像Angular中的过滤器一样。目前我有一些访问器设置为在视图中将char(1)字段转换为完整值,例如" c"现金或" f"资助。这是访问者的预期(或可接受的)使用吗?如果是这样,有什么方法可以阻止访问者格式化绑定到表单的属性,例如,在编辑路径中。
例如,我将数据库中的货币金额存储为小数,但使用字符($ 150,00)对其进行格式化以显示在show route中。如何在填充编辑表单时阻止访问者更改值? (验证将失败,因为输入仅限于数值)。
答案 0 :(得分:12)
一切都取决于您的需求。关键是您不需要为实际的列/属性创建访问器。例如,让我们在DB中确认您有价格区域。
使用以下代码:
$model = Model::find(1);
echo $model->price;
您可以显示行价仅显示数据库中的数据。
但您也可以为现有属性创建访问者:
public function getCurPriceAttribute($value)
{
return '$ '.($this->price * 1.08); // for example adding VAT tax + displaying currency
}
现在您可以使用:
$model = Model::find(1);
echo $model->price;
echo $model->cur_price;
现在,如果您想要将数据放入表单,您将使用$model->price
来允许用户在没有货币的情况下进行更改,而在其他您希望使用货币显示产品价值的地方$model->cur_price
< / p>