ホームページ >バックエンド開発 >PHPチュートリアル >Laravel5フレームワークにおけるサブビューの分析とフォームの再利用
この記事は、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(['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}
ブラウザで /articles/1/edit にアクセスし、ソース コードを確認して、 find laravel _method=PATCHの隠しフィールドが自動生成されます。
最初の問題は、記事を編集しても、記事の情報が表示されないことです。ビューを変更しましょう。
{!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $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('articles'); }
変更プロセス中に検証する必要もあります。Request クラスを再利用しましょう。 CreateArticleRequest の名前をより一般的な ArticleRequest に変更し、store メソッドのパラメーターを忘れずに変更してください。
public function update($id, Requests\ArticleRequest $request) { $article = Article::findOrFail($id); $article->update($request->all()); return redirect('articles'); }
残りの問題は、新しいコードと編集コードがエラーの表示など、ほとんど同じコードを使用していることですが、それらは 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('articles.list')
フォーム コードをもう一度扱いましょう。フォームが異なる点を除いて、フォーム コードは異なります。送信ボタン、他はほぼ同じです。 view Articles/form_partial.blade.php を作成し、コード
<p class="form-group"> {!! Form::label('title', 'Title:') !!} {!! Form::text('title', null, ['class' => 'form-control']) !!} </p> <p class="form-group"> {!! Form::label('body', 'Body:') !!} {!! Form::textarea('body', null, ['class' => 'form-control']) !!} </p> <p class="form-group"> {!! Form::label('published_at', 'Publish On:') !!} {!! Form::input('date', 'published_at', date('Y-m-d'), ['class' => 'form-control']) !!} </p> <p class="form-group"> {{--这里要设置变量,依据是编辑还是修改来改变,当然也可以不放置在partial中--}} {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!} </p>
Modify create.blade.php
@extends('layout') @section('content')をコピーします。Write a New Article
@include('articles.list') {{--使用我们添加的 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('articles.list') {{--使用我们添加的 illuminate\html 开源库--}} {!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!} @include('articles.form_partial', ['submitButtonText' => 'Update Article']) {!! Form::close() !!} @stop
上記はこの記事の全内容です。お役に立てば幸いです。皆さんの学習に向けて、関連コンテンツについては PHP 中国語 Web サイトに注目してください。
関連する推奨事項:
Laravel のページとフォームの検証 4 Laravel フレームワーク データベースの CURD 操作とコヒーレント操作の分析について
#PHP フレームワーク Laravel プラグイン Pagination でカスタムページングを実装する方法について
##
以上がLaravel5フレームワークにおけるサブビューの分析とフォームの再利用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。