使用相同刀片添加和编辑内容的最佳做法

时间:2017-03-16 07:47:25

标签: php laravel blade

我正在创建一个简单的博客,我正在尝试使用相同的刀片来编辑和添加文章。

我已经设法让它发挥作用,但我认为我这样做的方式很奇怪。 我必须在刀片if(!empty($article)){{$article->title or ''}}中使用。

有更好的方法吗?尝试混淆它们是不好的做法吗?

这是我的添加/编辑/刀片以便更好地理解

<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>

1 个答案:

答案 0 :(得分:1)

如果创建/编辑表单几乎相同,那么对两个表单使用一个视图和一个模型方法是个好主意。你可以这样做:

<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 Collective包。它具有form model binding功能,非常适合这种情况。

在模型中,我通常使用updateOrCreate()来处理创建新对象和更新现有对象。