Écrire un petit blog en utilisant le framework Laravel

巴扎黑
Libérer: 2023-03-15 08:10:02
original
1983 Les gens l'ont consulté

Cet article vous présente principalement les informations pertinentes sur l'utilisation de Laravel pour créer un mini blog. L'article présente les étapes de mise en œuvre étape par étape à travers un exemple de code de manière très détaillée. Il a une certaine valeur de référence et d'apprentissage pour tous les amis. qui en a besoin Apprenons avec l'éditeur ci-dessous.

Cet article vous présente principalement le contenu pertinent sur l'utilisation de Laravel pour créer un mini blog. Il est partagé pour votre référence et votre apprentissage. Je ne dirai pas grand-chose ci-dessous, jetons un œil à l'introduction détaillée :

1. Conception et idées

Avant de commencer à écrire la première ligne de code, nous devons faire de notre mieux pour concevoir le produit que nous voulons faire du début à la fin. Eh bien, évitez de l'écrire et de le réviser à nouveau et d'écrire davantage de code inutile.

  • Analyse des besoins : notre mini blog doit au moins inclure : ajouter/modifier/afficher/supprimer des articles et des fonctions d'affichage de liste d'articles.

  • Analyse de base de données : sur la base de cette fonction, nous n'avons besoin que d'une table de données Articles pour stocker les articles.

  • Analyse de la structure de la page : l'héritage du modèle doit être utilisé pour créer un modèle de base comprenant : l'en-tête/la liste d'articles/les informations du bas

2. Créer des itinéraires

Pour compléter ce blog, vous avez probablement besoin des itinéraires suivants :

| | | -------- | Routage des pages de la liste des articles | Retourner à la page de la liste des articles | page | Routage de la fonction de sauvegarde de l'article | Enregistrer le routage de la page de l'article | Revenir à la page de détails de l'article | puis enregistrez-le dans la base de données | Supprimer le routage de la fonction d'article | Supprimer l'article de la base de données |

Vous pouvez voir que presque tous sont des routes d'opération de données pour les articles. Pour cette situation, Laravel fournit un moyen très pratique. : Contrôleur de ressources RESTful et routage .

Ouvrez routes.php et ajoutez le code suivant :


Route::resource('articles', 'ArticlesController');
Copier après la connexion

Une seule ligne de code comme ci-dessus est équivalente pour créer Les 7 routes suivantes sont toutes des routes nommées. Nous pouvons utiliser quelque chose comme route('articles.show').


Route::get('/articles', 'ArticlesController@index')->name('articles.index'); 
Route::get('/articles/{id}', 'ArticlesController@show')->name('articles.show'); 
Route::get('/articles/create', 'ArticlesController@create')->name('articles.create'); 
Route::post('/articles', 'ArticlesController@store')->name('articles.store'); 
Route::get('/articles/{id}/edit', 'ArticlesController@edit')->name('articles.edit'); 
Route::patch('/articles/{id}', 'ArticlesController@update')->name('articles.update'); 
Route::delete('/articles/{id}', 'ArticlesController@destroy')->name('articles.destroy');
Copier après la connexion

3. Créer un contrôleur

Utiliser artisan pour créer un article Appareil de contrôle :


php artisan make:controller ArticlesController
Copier après la connexion

4. Créer une vue de base

ressources/ vues/layouts/art.blade.php

Voir le modèle index.html

5. Nouveau formulaire d'article


@extends('layouts.art')
@section('content')

 <form class="form-horizontal" method="post" action="{{route(&#39;blog.store&#39;)}}">
   {{ csrf_field() }}
 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">标题</label>
 <p class="col-sm-8">
  <input type="title" class="form-control" id="title" name="title">
 </p>
 </p>

 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">内容</label>
 <p class="col-sm-8">
  <textarea class="form-control" rows="5" id="content" name="content"></textarea>
 </p>
 </p>

 <p class="form-group">
 <p class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-default">创建</button>
 </p>
 </p>
</form> 
@endsection
Copier après la connexion

6. Stockage des articles

Si vous remplissez le formulaire de nouvel article à ce moment-là, cliquez sur Soumettre. Cela passera également à une page vierge pour la même raison, car notre code de contrôleur ultérieur n'a pas encore été écrit.

Pour mettre en œuvre le stockage d'articles, vous devez d'abord configurer la base de données, créer des tables de données, créer des modèles, puis compléter le code logique de stockage.

1. Configurer la base de données

Modifier le fichier .env

2. Créer une table de données

Utilisez la commande artisanale pour générer la migration :


php artisan make:migration create_articles_talbe --create=articles
Copier après la connexion

Modifier le fichier de migration


public function up() 
 {
  Schema::create(&#39;articles&#39;, function (Blueprint $table) {
   $table->increments(&#39;id&#39;);
   $table->string(&#39;title&#39;);
   $table->longText(&#39;content&#39;);
   $table->timestamps();
  });
 }
public function down() 
 {
  Schema::dropIfExists(&#39;articles&#39;);
 }
Copier après la connexion

Nous avons créé une table d'articles qui contient un champ d'identifiant incrémentiel, un champ de titre de chaîne, un champ de contenu de texte long et un horodatage.

Exécuter la migration de la base de données :


php artisan migrate
Copier après la connexion

Connectez-vous à MySQL et affichez la table de données.

3. Créer un modèle

Utilisez la commande artisanale pour créer un modèle :


php artisan make:model Article
Copier après la connexion

Ouvrez le fichier Modèle, entrez le code suivant :

app/Article.php


namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model 
{
 //对应的表
 protected $table = &#39;articles&#39;;
 //通过model可以写入的字段
 protected $fillable = [
  &#39;title&#39;, &#39;content&#39;,
 ];
}
Copier après la connexion

4. Stockez le code logique

Ouvrez le contrôleur ArticlesController.php et recherchez la méthode store().

app/Http/Controllers/ArticlesController.php


 public function store(Request $request)
 {
  //数据验证 错误处理
  $this->validate($request,[
   &#39;title&#39;=>&#39;required|max:50&#39;,
   &#39;content&#39;=>&#39;required|max:500&#39;,
   ]);
  // 1 orm方式写入
  $article = Article::create([
   &#39;title&#39;=>$request->title,
   &#39;content&#39;=>$request->content,
   ]);
  //2 或者
  /* $article = new Article();
   $article->title =$request->title;
   $article->content = $request->content;
   $article->save();*/

   //3 db方式写入
   //insert()方法返回值为true 和 false
   //$res = DB::table(&#39;articles&#39;)->insert([&#39;title&#39;=>$request->title,&#39;content&#39;=>$request->content]);
  return redirect()->route(&#39;blog.index&#39;);
 }
Copier après la connexion

Erreur de validation affichée


@if (count($errors) > 0)
 <p class="alert alert-danger">
  <ul>
   @foreach($errors->all() as $error)
   <li>{{ $error }}</li>
   @endforeach
  </ul>
 </p>
@endif
Copier après la connexion

7. Affichage de la liste d'articles

Après avoir terminé la fonction d'ajout d'articles, nous pouvons implémenter notre page d'affichage de liste d'articles.

Ouvrez ArticlesController.php et recherchez la méthode index() , ajoutez le code comme suit :

app/Http/Controllers/ArticlesController.php


use App\Article;

public function index() 
 {
  $articles = Article::orderBy(&#39;created_at&#39;,&#39;asc&#39;)->get();

  return view(&#39;articles.index&#39;, [&#39;articles&#39;=>$articles]);
 }
Copier après la connexion

Voir index.blade.php


@extends(&#39;layouts.art&#39;)
@section(&#39;content&#39;)

 <a class="btn btn-primary" href="{{route(&#39;blog.create&#39;)}}" rel="external nofollow" >添加文章</a>


 @foreach($articles as $article)
 <p class="panel panel-default">
 <p class="panel-body">
 {{$article->title}}
 <a href="{{route(&#39;blog.show&#39;,$article->id)}}" rel="external nofollow" class="btn btn-info">阅读</a>
 <a href="{{route(&#39;blog.edit&#39;, $article->id)}}" rel="external nofollow" class="btn btn-info">修改</a>

  <form action="{{ route(&#39;blog.destroy&#39;, $article->id) }}" method="post" style="display: inline-block;">
   {{ csrf_field() }}
   {{ method_field(&#39;DELETE&#39;) }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
 </p>
 </p>
 @endforeach

 {!! $articles->render() !!}
 @endsection
Copier après la connexion

Modifier le formulaire d'article

Le formulaire de modification d'article est en fait très similaire au nouveau formulaire d'article créé auparavant, sauf que les données existantes doivent être lues et remplies sur le formulaire.

Nous ajoutons d'abord un bouton d'édition sur chaque article de la page de liste d'articles :

Affichage :


@extends(&#39;layouts.art&#39;)
@section(&#39;content&#39;)

 <form class="form-horizontal" method="post" action="{{route(&#39;blog.update&#39;,$article->id)}}">
   {{ csrf_field() }}
  {{ method_field(&#39;PATCH&#39;) }}
 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">标题</label>
 <p class="col-sm-10">
  <input type="title" class="form-control" id="title" name="title" value="{{ $article->title }}">
 </p>
 </p>


 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">内容</label>
 <p class="col-sm-10">
  <textarea class="form-control" rows="5" id="content" name="content"> {{ $article->content }}</textarea>
 </p>
 </p>


 <p class="form-group">
 <p class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-default">修改</button>
 </p>
 </p>
</form> 
@endsection
Copier après la connexion

注意这段代码中的 {{ method_field(&#39;PATCH&#39;) }} ,这是跨站方法伪造,HTML 表单没有支持 PUT、PATCH 或 DELETE 动作。所以在从 HTML 表单中调用被定义的 PUT、PATCH 或 DELETE 路由时,你将需要在表单中增加隐藏的 _method 字段来伪造该方法,详情参考 官方文档。

控制器


//展示修改模板
public function edit($id) 
 {
  $article = Article::findOrFail($id);
  return view(&#39;art.edit&#39;,[&#39;article&#39;=>$article]);
 }
//执行修改
public function update(Request $request, $id) 
 {
  $this->validate($request, [
   &#39;title&#39; => &#39;required|max:50&#39;,
   &#39;content&#39;=>&#39;required|max:500&#39;,
  ]);

  $article = Article::findOrFail($id);
  $article->update([
   &#39;title&#39; => $request->title,
   &#39;content&#39; => $request->content,
  ]);

   return redirect()->route(&#39;blog.index&#39;);
 }
Copier après la connexion

九、删除文章

删除按钮


 <form action="{{ route(&#39;blog.destroy&#39;, $article->id) }}" method="post" style="display: inline-block;">
   {{ csrf_field() }}
   {{ method_field(&#39;DELETE&#39;) }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
Copier après la connexion

控制器:


public function destroy($id) 
 {
  $article = Article::findOrFail($id);
  $article->delete();
  return back();
 }
Copier après la connexion

十、结语

本次实验通过一个很简单的迷你博客对 Laravel RESTful 资源控制器和路由,视图,orm进行了强化练习。

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