Dieser Artikel stellt hauptsächlich die Verwendung von Unteransichten und die Wiederverwendung von Formularen im Laravel5-Framework vor. Er ist sehr hilfreich für alle, die das Laravel5-Framework beherrschen.
Wir müssen uns um die Bearbeitung von Artikeln kümmern. Natürlich können wir neue Routen manuell hinzufügen, so:
Route::get('/articles/{id}/edit', 'ArticleController@edit');
Lassen Sie uns artisan’s route:list in der Befehlszeile verwenden, um unsere aktuellen Routen anzuzeigen:
php artisan route:list
In RESTful. In diesem Fall ist es Möglicherweise ist es eine gute Wahl, die Ressourcenroute von Laravel direkt zu verwenden. Dann entfernen wir alle Routen und fügen nur die einzige hinzu:
Route::resource('articles', 'ArticlesController');
Verwenden Sie php artisan route:list erneut, um die Route anzuzeigen, wow, eine Menge Routen entstehen, die unseren Erwartungen entsprechen. Schauen Sie sich jeden Artikel genau an.
Jetzt Methode im Controller hinzufügen:
public function edit($id) { $article = Article::findOrFail($id); return view('articles.edit', compact('article')); }
Jetzt Ansicht erstellen
@extends('layout') @section('content') <h1>Edit: {!! $article->title !!} </h1> <hr/> ...
Okay, ich gebe zu, dass diese Codes aus create.blade.php kopiert und ein wenig geändert wurden. Die Frage ist, müssen wir sie wiederholen? Wir werden uns später mit diesem Problem befassen. Schauen wir uns nun das Problem der Formularübermittlung an. In der Route, php artisan route:list, lesen Sie es noch einmal, die Änderung verwendet die PATCH-Methode, ändern wir die Ansicht:
{!! Form::open(['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}
Besuchen Sie /articles/1/edit im Browser, überprüfen Sie den Quellcode und find laravel Das versteckte Feld von _method=PATCH wird automatisch generiert.
Ein Problem besteht darin, dass wir den Artikel bearbeiten, aber die Artikelinformationen nicht angezeigt werden:
{!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}
OK, alles ist in Ordnung, außer dass das Feld „publicated_on“ immer noch auf eingestellt ist aktuelles Datum, gefolgt von „Wir kümmern uns darum“.
Fügen Sie nun die Methode im Controller hinzu:
public function update($id, \Illuminate\Http\Request $request) { $article = Article::findOrFail($id); $article->update($request->all()); return redirect('articles'); }
Wir müssen auch während des Änderungsprozesses überprüfen, ob wir unsere Request-Klasse wiederverwenden können. Benennen Sie CreateArticleRequest in das allgemeinere ArticleRequest um und vergessen Sie nicht, die Parameter in der Store-Methode zu ändern.
public function update($id, Requests\ArticleRequest $request) { $article = Article::findOrFail($id); $article->update($request->all()); return redirect('articles'); }
Das verbleibende Problem besteht nun darin, dass unser neuer und bearbeiteter Code größtenteils denselben Code verwenden, z. B. Fehler anzeigen, aber in zwei Kopien vorhanden sind. Ändern wir ihn diese Frage.
Wir erstellen eine neue Datei list.blade.php direkt unter Ansichten/Artikeln und kopieren den Fehlerbehandlungscode aus create.blade.php:
@if ($errors->any()) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif
Ersetzen Sie in create.blade.php einfach den Fehlerbehandlungscode durch die folgende Anweisung:
@include('articles.list')
Befassen wir uns noch einmal mit dem Formularcode. Der Formularcode ist anders, außer dass das Formular anders ist , andere sind fast gleich. Wir erstellen eine Ansicht Articles/form_partial.blade.php und kopieren den Code
<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 ändern
@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
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird hilfreich sein Bitte achten Sie auf die chinesische PHP-Website, um weitere verwandte Inhalte zu erhalten!
Verwandte Empfehlungen:
Seiten- und Formularvalidierung in Laravel 4
Über Laravel-Framework-Datenbank-CURD-Operationen und kohärente Operationsanalyse
Das obige ist der detaillierte Inhalt vonAnalyse von Unteransichten und Formularwiederverwendung im Laravel5-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!