- laravel开发新模块案例
-
ChatGPT
2024年06月03日 10时13分Token: 1528
好的,以下是一个关于如何在Laravel应用中开发一个新模块的案例。这个示例将演示如何创建一个简单的博客模块,包括创建与管理文章的基本功能。
首先,确保你已经安装Laravel
composer create-project --prefer-dist laravel/laravel blogApp cd blogApp
1. 创建迁移文件和模型
我们需要一个数据库表来存储文章。使用Laravel的
artisan
命令来生成迁移和模型。php artisan make:model Article -m
这个命令会创建
app/Models/Article.php
模型和database/migrations/xxxx_xx_xx_create_articles_table.php
迁移文件。2. 定义数据库迁移
打开
database/migrations/xxxx_xx_xx_create_articles_table.php
文件,并定义表结构:phppublic function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); }
然后运行迁移:
php artisan migrate
3. 设置模型
编辑
app/Models/Article.php
文件,为文章模型添加一些必要配置:phpnamespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Article extends Model { use HasFactory; protected $fillable = ['title', 'content']; }
4. 创建控制器
创建一个控制器来处理文章的基本操作:
php artisan make:controller ArticleController
在
app/Http/Controllers/ArticleController.php
中添加以下内容:phpnamespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function index() { $articles = Article::all(); return view('articles.index', compact('articles')); } public function create() { return view('articles.create'); } public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'content' => 'required|string', ]); Article::create($validated); return redirect()->route('articles.index'); } public function show(Article $article) { return view('articles.show', compact('article')); } public function edit(Article $article) { return view('articles.edit', compact('article')); } public function update(Request $request, Article $article) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'content' => 'required|string', ]); $article->update($validated); return redirect()->route('articles.index'); } public function destroy(Article $article) { $article->delete(); return redirect()->route('articles.index'); } }
5. 定义路由
在
routes/web.php
中定义路由:phpuse App\Http\Controllers\ArticleController; Route::resource('articles', ArticleController::class);
6. 创建视图
在
resources/views
目录下,创建一个articles
文件夹,并添加以下视图文件。index.blade.php
php@extends('layouts.app') @section('content') <h1>Articles</h1> <a href="{{ route('articles.create') }}">Create New Article</a> @foreach ($articles as $article) <div> <h2><a href="{{ route('articles.show', $article) }}">{{ $article->title }}</a></h2> <p>{{ Illuminate\Support\Str::limit($article->content, 100) }}</p> <a href="{{ route('articles.edit', $article) }}">Edit</a> <form action="{{ route('articles.destroy', $article) }}" method="POST" style="display: inline;"> @csrf @method('DELETE') <button type="submit">Delete</button> </form> </div> @endforeach @endsection
create.blade.php
php@extends('layouts.app') @section('content') <h1>Create New Article</h1> <form action="{{ route('articles.store') }}" method="POST"> @csrf <div> <label for="title">Title:</label> <input type="text" name="title" id="title" value="{{ old('title') }}"> @error('title') <div>{{ $message }}</div> @enderror </div> <div> <label for="content">Content:</label> <textarea name="content" id="content">{{ old('content') }}</textarea> @error('content') <div>{{ $message }}</div> @enderror </div> <button type="submit">Create</button> </form> @endsection
show.blade.php
php@extends('layouts.app') @section('content') <h1>{{ $article->title }}</h1> <p>{{ $article->content }}</p> <a href="{{ route('articles.index') }}">Back to Articles</a> @endsection
edit.blade.php
php@extends('layouts.app') @section('content') <h1>Edit Article</h1> <form action="{{ route('articles.update', $article) }}" method="POST"> @csrf @method('PUT') <div> <label for="title">Title:</label> <input type="text" name="title" id="title" value="{{ old('title', $article->title) }}"> @error('title') <div>{{ $message }}</div> @enderror </div> <div> <label for="content">Content:</label> <textarea name="content" id="content">{{ old('content', $article->content) }}</textarea> @error('content') <div>{{ $message }}</div> @enderror </div> <button type="submit">Update</button> </form> @endsection
7. 运行应用
使用以下命令启动开发服务器:
php artisan serve
访问
http://localhost:8000/articles
,你应该能够看到文章的列表页面并可以进行创建、查看、编辑和删除操作。以上就是一个简单的Laravel博客模块开发案例。希望这能帮助你理解如何在Laravel中创建新的模块。