Créer un mini blog avec Laravel
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 de manière très détaillée à travers un exemple de code. Il a une certaine valeur de référence et d'apprentissage pour tout le monde. j'espère que cela pourra aider tout le monde.
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 pour éviter d'avoir pour le changer après l'avoir écrit. Écrivez plus 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 Routage
Les itinéraires suivants sont probablement nécessaires pour compléter ce blog :
| Fonction de routage | - ------- | Routage de la page de la liste des articles | Retour à la page de la liste des articles | Routage de la nouvelle page de l'article | Retour à la page de détails de l'article | Modifier l'itinéraire de la page | Revenir à la page d'édition de l'article | Supprimer et mettre à jour l'article et le sauvegarder dans la base de données | |
Vous pouvez voir que presque toutes sont des routes d'opération de données pour les articles. Pour cette situation, Laravel propose une méthode très pratique : le contrôleur de ressources RESTful et le routage.
Ouvrez routes.php et ajoutez le code suivant :
Route::resource('articles', 'ArticlesController');
Avec une seule ligne de code ci-dessus, cela équivaut à créer les 7 routes suivantes, qui sont toutes nommées routes. Nous pouvons utiliser quelque chose comme l'utilisation de 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');
3. Créez un contrôleur
Utilisez artisan pour créer un contrôleur d'article :
php artisan make:controller ArticlesController
Créez une vue de base
resources/views/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('blog.store')}}"> {{ 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
6. Stockage des articles
À ce stade, si vous remplissez le formulaire de nouvel article et cliquez sur Soumettre, il passera à une page vierge. La même raison est vraie, car notre contrôleur suivant. le code 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
Utiliser la commande artisanale pour générer la migration :
php artisan make:migration create_articles_talbe --create=articles
Modifier le fichier de migration
public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->longText('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); }
Nous avons créé une table d'articles contenant un champ d'identifiant incrémentiel, un champ de titre de chaîne, un champ de contenu de texte long et un horodatage.
Effectuer la migration de la base de données :
php artisan migrate
Connectez-vous à MySQL et affichez la table de données.
3. Créer un modèle
Utilisez la commande artisan pour créer un modèle :
php artisan make:model Article
Ouvrez le fichier modèle et saisissez le code suivant :
app/ Article.php
namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { //对应的表 protected $table = 'articles'; //通过model可以写入的字段 protected $fillable = [ 'title', 'content', ]; }
4. Code logique de stockage
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,[ 'title'=>'required|max:50', 'content'=>'required|max:500', ]); // 1 orm方式写入 $article = Article::create([ 'title'=>$request->title, 'content'=>$request->content, ]); //2 或者 /* $article = new Article(); $article->title =$request->title; $article->content = $request->content; $article->save();*/ //3 db方式写入 //insert()方法返回值为true 和 false //$res = DB::table('articles')->insert(['title'=>$request->title,'content'=>$request->content]); return redirect()->route('blog.index'); }
Affichage de l'erreur de vérification
@if (count($errors) > 0) <p class="alert alert-danger"> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </p> @endif
7. Affichage de la liste des articles
Après avoir terminé la fonction d'ajout d'article, nous pouvons implémenter notre page d'affichage de liste d'articles.
Ouvrez ArticlesController.php et recherchez la méthode index() Ajoutez le code suivant :
app/Http/Controllers/ArticlesController.php
use App\Article; public function index() { $articles = Article::orderBy('created_at','asc')->get(); return view('articles.index', ['articles'=>$articles]); }
Afficher l'index. blade.php
@extends('layouts.art') @section('content') <a class="btn btn-primary" href="{{route('blog.create')}}" rel="external nofollow" >添加文章</a> @foreach($articles as $article) <p class="panel panel-default"> <p class="panel-body"> {{$article->title}} <a href="{{route('blog.show',$article->id)}}" rel="external nofollow" class="btn btn-info">阅读</a> <a href="{{route('blog.edit', $article->id)}}" rel="external nofollow" class="btn btn-info">修改</a> <form action="{{ route('blog.destroy', $article->id) }}" method="post" style="display: inline-block;"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="btn btn-danger">删除</button> </form> </p> </p> @endforeach {!! $articles->render() !!} @endsection
8. Modifier le formulaire d'article
Le formulaire de modification d'article est en fait très similaire au nouveau formulaire d'article créé auparavant. Il suffit de lire les données existantes. et remplissez-le. sur le formulaire.
Nous ajoutons d'abord un bouton d'édition à chaque article sur la page de liste d'articles :
Affichage :
@extends('layouts.art') @section('content') <form class="form-horizontal" method="post" action="{{route('blog.update',$article->id)}}"> {{ csrf_field() }} {{ method_field('PATCH') }} <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
Notez le {{ method_field(' PATCH') }} , il s'agit d'une falsification de méthode intersites, les formulaires HTML ne prennent pas en charge les actions PUT, PATCH ou DELETE. Ainsi, lorsque vous appelez la route PUT, PATCH ou DELETE définie à partir d'un formulaire HTML, vous devrez ajouter un champ _method caché au formulaire pour simuler la méthode. Pour plus de détails, reportez-vous à la documentation officielle.
Contrôleur
//展示修改模板 public function edit($id) { $article = Article::findOrFail($id); return view('art.edit',['article'=>$article]); } //执行修改 public function update(Request $request, $id) { $this->validate($request, [ 'title' => 'required|max:50', 'content'=>'required|max:500', ]); $article = Article::findOrFail($id); $article->update([ 'title' => $request->title, 'content' => $request->content, ]); return redirect()->route('blog.index'); }
9. Supprimer l'article
Bouton Supprimer
<form action="{{ route('blog.destroy', $article->id) }}" method="post" style="display: inline-block;"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="btn btn-danger">删除</button> </form>
Contrôleur :
public function destroy($id) { $article = Article::findOrFail($id); $article->delete(); return back(); }
10. Conclusion
Cette expérience a utilisé un mini-blog très simple pour mener des exercices intensifs sur le contrôleur de ressources Laravel RESTful, le routage, la vue et l'ORM.
Recommandations associées :
Comment créer un blog simple avec PHP
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Laravel - Personnalisations de pagination - Laravel inclut une fonctionnalité de pagination qui aide un utilisateur ou un développeur à inclure une fonctionnalité de pagination. Le paginateur Laravel est intégré au générateur de requêtes et à Eloquent ORM. La méthode paginate automatique

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Laravel - Dump Server - Le serveur de dump Laravel est livré avec la version de Laravel 5.7. Les versions précédentes n'incluent aucun serveur de dump. Le serveur de vidage sera une dépendance de développement dans le fichier laravel/laravel composer.

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...
