Laravel:为创建和编辑创建一个表单

时间:2016-06-13 17:50:40

标签: php laravel

我有两种形式像往常一样(edit.blade.php + create.blade.php) 我有一个Model $产品,它有许多关系,例如$product->product_meta->price

对于直接值$ product->名称我已经在表单中添加了这个并且像charm一样工作,没有任何问题:

1-在创作中我添加了以下内容:

{!! Form::text('name_ar', old('name_ar') ,['class' => 'form-control']) !!}

2-在编辑中我还添加了以下内容,它可以正常工作

{!! Form::text('name_ar', old('name_ar') ,['class' => 'form-control']) !!}

当谈到关系时,这些都不起作用:

{!! Form::text('name_ar', old('product_meta.price') ,['class' => 'form-control']) !!}
{!! Form::text('name_ar', old(['product_meta']['price']) ,['class' => 'form-control']) !!}

任何想法? !

1 个答案:

答案 0 :(得分:1)

我在某些模型上这样做,但通常更喜欢避免它,因为创建和更新的逻辑很多次。

如果您在视图中没有该字段,则无论如何都不起作用。

{!! Form::text('name_ar', old('product_meta.price') ,['class' => 'form-control']) !!}

old()引用具有该名称的输入,因此如果该字段命名为" name_ar"你不能使用' product_meta.price'来获得旧的价值。

但是old()也接受第二个参数作为回退,所以你可以检查旧的输入,然后如果不存在(没有提交),用关系数据设置值如下:

{!! Form::text('name_ar', old('name_ar', ( isset($product) ? $product->product_meta->price ,'') ) ,['class' => 'form-control']) !!}

上面将查找名为' name_arr'的旧输入。在最后一次提交时,如果找不到(您尚未提交),将查看变量$ product是否已设置(因此您正在进行编辑),而不是“' s未设置将值设置为空'' (你正在创造)

希望这个帮助

干杯