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

不言
Libérer: 2023-04-01 06:42:02
original
1184 Les gens l'ont consulté

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');
Copier après la connexion
Utilisons artisan's route:list sur la ligne de commande pour afficher nos itinéraires actuels :

php artisan route:list
Copier après la connexion
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');
Copier après la connexion
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'));
  }
Copier après la connexion

Créez maintenant la vue

@extends('layout')

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

  <hr/>

  ...
Copier après la connexion

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]) !!}
Copier après la connexion
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]) !!}
Copier après la connexion
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;);
  }
Copier après la connexion

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;);
  }
Copier après la connexion

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
Copier après la connexion

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

@include(&#39;articles.list&#39;)
Copier après la connexion
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>
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!