ホームページ >バックエンド開発 >PHPチュートリアル >Laravel5フレームワークにおけるサブビューの分析とフォームの再利用

Laravel5フレームワークにおけるサブビューの分析とフォームの再利用

不言
不言オリジナル
2018-06-13 16:51:201281ブラウズ

この記事は、Laravel5 フレームワークにおけるサブビューとフォームの再利用を主に紹介するもので、Laravel5 フレームワークをマスターするのに非常に役立ちます。

記事の編集の問題に対処する必要があります。もちろん、次のように新しいルートを手動で追加することもできます:

Route::get('/articles/{id}/edit', 'ArticleController@edit');

コマンドラインでArtisanのroute:listを使用して、現在のルートを表示しましょう:

php artisan route:list

RESTfulに沿ってこの場合、laravel のリソース ルートを直接使用するのが良い選択かもしれません。その後、すべてのルートを削除し、1 つだけを追加します。

Route::resource('articles', 'ArticlesController');

もう一度 php 職人ルート:リストを使用してルートを表示します。私たちの期待を満たすルートが多数生成されます。それぞれの項目を注意深く見てください。

#次に、コントローラーにメソッドを追加します:

  public function edit($id) {
    $article = Article::findOrFail($id);

    return view('articles.edit', compact('article'));
  }

#次にビューを作成します

@extends('layout')

@section('content')
  <h1>Edit: {!! $article->title !!} </h1>

  <hr/>

  ...

わかりました。これらのコードが create.blade.php からコピーされ、少し変更されたことを認めます。問題は、それらを繰り返す必要があるかどうかです。この問題については後で扱います。ここではフォーム送信の問題を見てみましょう。ルーティングでは、php 職人のルート:リストをもう一度読み、変更には PATCH メソッドが使用されています。ビューを変更しましょう:

{!! Form::open([&#39;method&#39; => &#39;PATCH&#39;, &#39;url&#39; => &#39;articles/&#39; . $article->id]) !!}

ブラウザで /articles/1/edit にアクセスし、ソース コードを確認して、 find laravel _method=PATCHの隠しフィールドが自動生成されます。

最初の問題は、記事を編集しても、記事の情報が表示されないことです。ビューを変更しましょう。

 {!! Form::model($article, [&#39;method&#39; => &#39;PATCH&#39;, &#39;url&#39; => &#39;articles/&#39; . $article->id]) !!}

OK、published_on フィールドがまだ残っていることを除いて、すべて問題ありません。現在の日付に設定し、その後に We'll handle it を続けます。

次に、コントローラーにメソッドを追加します。

  public function update($id, \Illuminate\Http\Request $request) {
    $article = Article::findOrFail($id);
    $article->update($request->all());

    return redirect(&#39;articles&#39;);
  }

変更プロセス中に検証する必要もあります。Request クラスを再利用しましょう。 CreateArticleRequest の名前をより一般的な ArticleRequest に変更し、store メソッドのパラメーターを忘れずに変更してください。

  public function update($id, Requests\ArticleRequest $request) {
    $article = Article::findOrFail($id);
    $article->update($request->all());

    return redirect(&#39;articles&#39;);
  }

残りの問題は、新しいコードと編集コードがエラーの表示など、ほとんど同じコードを使用していることですが、それらは 2 つのコピーに存在するため、変更しましょう。この質問。

view/articles の直下に新しいファイル list.blade.php を作成し、create.blade.php からエラー処理コードをコピーします。

@if ($errors->any())
  <ul class="alert alert-danger">
    @foreach($errors->all() as $error)
      <li>{{ $error }}</li>
    @endforeach
  </ul>
@endif

create.blade.php で、エラー処理コードを次のステートメントに置き換えるだけです。

@include(&#39;articles.list&#39;)

フォーム コードをもう一度扱いましょう。フォームが異なる点を除いて、フォーム コードは異なります。送信ボタン、他はほぼ同じです。 view Articles/form_partial.blade.php を作成し、コード

<p class="form-group">
  {!! Form::label(&#39;title&#39;, &#39;Title:&#39;) !!}
  {!! Form::text(&#39;title&#39;, null, [&#39;class&#39; => &#39;form-control&#39;]) !!}
</p>

<p class="form-group">
  {!! Form::label(&#39;body&#39;, &#39;Body:&#39;) !!}
  {!! Form::textarea(&#39;body&#39;, null, [&#39;class&#39; => &#39;form-control&#39;]) !!}
</p>

<p class="form-group">
  {!! Form::label(&#39;published_at&#39;, &#39;Publish On:&#39;) !!}
  {!! Form::input(&#39;date&#39;, &#39;published_at&#39;, date(&#39;Y-m-d&#39;), [&#39;class&#39; => &#39;form-control&#39;]) !!}
</p>

<p class="form-group">
  {{--这里要设置变量,依据是编辑还是修改来改变,当然也可以不放置在partial中--}}
  {!! Form::submit($submitButtonText, [&#39;class&#39; => &#39;btn btn-primary form-control&#39;]) !!}
</p>

Modify create.blade.php

@extends('layout')

@section('content')
  

Write a New Article


@include(&#39;articles.list&#39;) {{--使用我们添加的 illuminate\html 开源库--}} {!! Form::open(['url' => 'articles']) !!} @include('articles.form_partial', ['submitButtonText' => 'Add Article']) {!! Form::close() !!} @stop
をコピーします。

edit.blade.phpを変更する

@extends('layout')

@section('content')
  

Edit: {!! $article->title !!}


@include(&#39;articles.list&#39;) {{--使用我们添加的 illuminate\html 开源库--}} {!! Form::model($article, [&#39;method&#39; => &#39;PATCH&#39;, &#39;url&#39; => &#39;articles/&#39; . $article->id]) !!} @include('articles.form_partial', ['submitButtonText' => 'Update Article']) {!! Form::close() !!} @stop

上記はこの記事の全内容です。お役に立てば幸いです。皆さんの学習に向けて、関連コンテンツについては PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

Laravel のページとフォームの検証 4


Laravel フレームワーク データベースの CURD 操作とコヒーレント操作の分析について


#PHP フレームワーク Laravel プラグイン Pagination でカスタムページングを実装する方法について


##

以上がLaravel5フレームワークにおけるサブビューの分析とフォームの再利用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。