laravel开发新模块案例ChatGPT

  • 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文件,并定义表结构:

    public 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文件,为文章模型添加一些必要配置:

    namespace 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中添加以下内容:

    namespace 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中定义路由:

    use App\Http\Controllers\ArticleController;
    
    Route::resource('articles', ArticleController::class);

    6. 创建视图

    resources/views目录下,创建一个articles文件夹,并添加以下视图文件。

    index.blade.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
    @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
     
    @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
    @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中创建新的模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴钢剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值