使用相同 blade 添加和编辑内容的最佳做法
Best practice to use same blade to add and edit content
我正在创建一个简单的博客,我正在尝试使用相同的 blade 来编辑和添加文章。
我已经设法让它工作了,但我认为我这样做的方式很奇怪。
我必须在 blade if(!empty($article))
或 {{$article->title or ''}}
.
中使用
有更好的方法吗?把它们混在一起是不好的做法吗?
这里是我的add/edit/blade为了更好的理解
<form method="post" action="/blog/{{$article->id or ''}}">
{{ csrf_field() }}
@if(!empty($article))
<input type="hidden" name="_method" value="PUT">
@endif
<input type="text" name="title" class="form-control" value="{{$article->title or ''}}" />
<textarea name="content" class="form-control">{{$article->content or ''}}</textarea>
<button type="submit">Envoyer</button>
</form>
如果create/edit 表单几乎相同,最好对两种表单使用一种视图和一种模型方法。你可以这样做:
<form method="post" action="{{ route('article.'.(isset($article) ? 'update' : 'store' )) }}">
{{ csrf_field() }}
<input type="hidden" name="_method" value="{{ isset($article) ? 'PUT' : 'POST' }}">
<input type="text" name="title" class="form-control" value="{{ $article->title or '' }}" />
<textarea name="content" class="form-control">{{ $article->content or ''}}</textarea>
<button type="submit">Envoyer</button>
</form>
另一种很酷的处理方法是使用 Laravel 集体包。它具有非常适合这种情况的 form model binding 功能。
在模型中,我通常使用 updateOrCreate()
,它可以处理创建新对象和更新现有对象。
我正在创建一个简单的博客,我正在尝试使用相同的 blade 来编辑和添加文章。
我已经设法让它工作了,但我认为我这样做的方式很奇怪。
我必须在 blade if(!empty($article))
或 {{$article->title or ''}}
.
有更好的方法吗?把它们混在一起是不好的做法吗?
这里是我的add/edit/blade为了更好的理解
<form method="post" action="/blog/{{$article->id or ''}}">
{{ csrf_field() }}
@if(!empty($article))
<input type="hidden" name="_method" value="PUT">
@endif
<input type="text" name="title" class="form-control" value="{{$article->title or ''}}" />
<textarea name="content" class="form-control">{{$article->content or ''}}</textarea>
<button type="submit">Envoyer</button>
</form>
如果create/edit 表单几乎相同,最好对两种表单使用一种视图和一种模型方法。你可以这样做:
<form method="post" action="{{ route('article.'.(isset($article) ? 'update' : 'store' )) }}">
{{ csrf_field() }}
<input type="hidden" name="_method" value="{{ isset($article) ? 'PUT' : 'POST' }}">
<input type="text" name="title" class="form-control" value="{{ $article->title or '' }}" />
<textarea name="content" class="form-control">{{ $article->content or ''}}</textarea>
<button type="submit">Envoyer</button>
</form>
另一种很酷的处理方法是使用 Laravel 集体包。它具有非常适合这种情况的 form model binding 功能。
在模型中,我通常使用 updateOrCreate()
,它可以处理创建新对象和更新现有对象。