合并创建和编辑刀片文件到1个文件?

时间:2017-01-18 10:59:52

标签: php laravel laravel-5 laravel-5.3

我创建了一个创建表单create.blade.php和一个编辑表单edit.blade.php - 两个表单字段都相同。

当我在create.blade.php中添加新字段时非常烦人,我还需要在edit.blade.php中添加字段。

如何合并到1个刀片文件中,以便它可以同时用于创建和编辑(通过db查看)。

例如在create.blade.php我有这个:

<label>Name</label>
<input type="text" name="name" value="{{ old('name') }}">
@if ($errors->has('name'))
  <label class="error">{{ $errors->first('name') }}</label>
@endif

edit.blade.php

<label>Name</label>
<input type="text" name="name" value="{{ old('name', $category->name) }}">
@if ($errors->has('name'))
  <label class="error">{{ $errors->first('name') }}</label>
@endif

3 个答案:

答案 0 :(得分:1)

检查模型是否存在:

{{ old('name', empty($category) ? '' : $category->name) }}

此外,您可能需要检查它是否创建或更新表单并相应更改表单网址:

{{ route(empty($category) ? 'article.create' : 'article.update' ) }}

答案 1 :(得分:0)

<input type="text" name="name" value="{{ $category ? $category->name : old('name') }}">

答案 2 :(得分:0)

您可以为表单使用部分(较小模板的精美名称),并将该部分数据传递给您所需的数据。

使用预订系统的示例:

在您的创建刀片文件中:

@include('bookings._forms', ['booking' => new \App\Booking])

和编辑文件(在控制器上检索$ booking):

@include('bookings._forms', ['booking' => $booking])

然后你的表单部分看起来像这样:

<label for="name" class="label">Name</label>
        <input type="text"
                     class="input"
                     name="name" id="name"
                     placeholder="Guest name"
                     value="{{ old('name') ?? $booking->name }}">

这种方法的好处在于,现在你只能在部分上拥有你的表单元素,只需要在添加字段时更新1个文件,并且实际标记保留在你的创建和编辑模板上,所以不用担心那个。

希望明白并且有所帮助。