Maison  >  Article  >  développement back-end  >  Analyse des sous-vues et réutilisation des formulaires dans le framework Laravel5

Analyse des sous-vues et réutilisation des formulaires dans le framework Laravel5

不言
不言original
2018-06-13 16:51:201223parcourir

Cet article présente principalement l'utilisation des sous-vues et la réutilisation des formulaires dans le framework Laravel5. Il est très détaillé et complet. Il est très utile pour tout le monde de maîtriser le framework Laravel5. Les amis dans le besoin peuvent s'y référer

Nous devons nous occuper de la rédaction des articles. Bien sûr, nous pouvons ajouter de nouveaux itinéraires manuellement, comme ceci :

Route::get('/articles/{id}/edit', 'ArticleController@edit');
Utilisons artisan's route:list sur la ligne de commande pour afficher nos itinéraires actuels :

php artisan route:list
Dans le cas de conformité RESTful, il peut être un bon choix d'utiliser directement la route des ressources de laravel. Cependant, nous supprimerons toutes les routes et n'ajouterons qu'une seule :

Route::resource('articles', 'ArticlesController');
Utiliser à nouveau la route artisan php :list Afficher les routes. , wow, un tas d'itinéraires qui répondent à nos attentes sont générés. Regardez attentivement chaque élément.

Ajoutez maintenant la méthode dans le contrôleur :

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

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

Créez maintenant la vue

@extends('layout')

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

  <hr/>

  ...

D'accord, j'avoue que ces codes ont été copiés depuis create.blade.php et modifiés. La question est : devons-nous les répéter ? Nous traiterons de ce problème plus tard, examinons maintenant le problème de soumission du formulaire. Dans la route, php artisan route:list, regardez encore, la modification utilise la méthode PATCH, modifions la vue :

{!! Form::open([&#39;method&#39; => &#39;PATCH&#39;, &#39;url&#39; => &#39;articles/&#39; . $article->id]) !!}
Visitez /articles/1/edit dans le navigateur, vérifiez le code source, Il a été constaté que Laravel générait automatiquement le champ caché de _method=PATCH.

Un problème est que nous modifions l'article, mais les informations sur l'article ne s'affichent pas. Modifions la vue :

 {!! Form::model($article, [&#39;method&#39; => &#39;PATCH&#39;, &#39;url&#39; => &#39;articles/&#39; . $article->id]) !!}
OK, tout va bien, sauf que le champ publié_on est toujours défini. à la date actuelle, nous y reviendrons plus tard.

Ajoutez maintenant la méthode dans le contrôleur :

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

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

Nous devons également vérifier pendant le processus de modification, réutilisons notre classe Request , renommez CreateArticleRequest en ArticleRequest plus général, n'oubliez pas de modifier les paramètres dans la méthode store.

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

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

Maintenant, le problème restant est que nos new et edit utilisent la plupart du même code, comme l'affichage des erreurs, mais ils existent deux fois, réparons ce problème.

Nous créons un nouveau fichier list.blade.php directement sous vues/articles, et copions le code de gestion des erreurs de create.blade.php :

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

Dans create.blade.php, remplacez simplement le code de gestion des erreurs par l'instruction suivante :

@include(&#39;articles.list&#39;)
Traitons à nouveau du code du formulaire. Le code du formulaire n'est pas le même sauf le formulaire. . Il y a une différence dans le bouton de soumission, mais tout le reste est pareil. On crée une vue articles/form_partial.blade.php et on copie le code

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

Modifier 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

Modifier 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

Ce qui précède est l'intégralité du contenu de cet article, J'espère que cela vous sera utile. L'apprentissage de tout le monde est utile. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Validation des pages et des formulaires dans Laravel 4

À propos des opérations CURD et des opérations cohérentes de la base de données du framework Laravel Analyse

À propos de la méthode de pagination du plug-in Laravel du framework PHP pour implémenter une pagination personnalisée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn