📜  laravel 中的资源控制器 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:13.508000             🧑  作者: Mango

Laravel 中的资源控制器

Laravel 中的资源控制器是一种用于管理 CRUD 功能的控制器。它允许你轻松地创建、存储、读取、更新和删除模型实例。

创建资源控制器

可以使用 Artisan 命令行工具来创建资源控制器,例如,要创建一个管理文章(Post)模型实例的资源控制器,可以在终端中执行以下命令:

php artisan make:controller PostController --resource --model=Post

该命令将在 app/Http/Controllers 目录下创建一个名为 PostController 的资源控制器,并为该控制器指定 Post 模型。命令行选项 --resource 告诉 Laravel 这是一个 RESTful 资源控制器。

定义资源路由

在创建资源控制器之后,必须将资源路由添加到应用程序中,以便你的应用程序可以处理从客户端发来的 HTTP 请求。可以使用 Route 门面来定义这些路由。例如,以下代码定义了一组基本的资源路由:

Route::resource('posts', 'PostController');

此路由会将 GET requests 发送到 /posts 路径时,交给 index 方法来处理, GET requests 发送到 /posts/create 路径时,交给 create 方法来处理, POST requests 发送到 /posts 路径时,交给 store 方法来处理, GET requests 发送到 /posts/{id} 路径时,交给 show 方法来处理, GET requests 发送到 /posts/{id}/edit 路径时,交给 edit 方法来处理, PUT/PATCH requests 发送到 /posts/{id} 路径时,交给 update 方法来处理, DELETE requests 发送到 /posts/{id} 路径时,交给 destroy 方法来处理。

定义控制器方法

资源控制器中的方法用于执行模型实例上的特定操作。以下是一个例子:

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::all();
        return view('posts.index', compact('posts'));
    }

    public function create()
    {
        return view('posts.create');
    }

    public function store(Request $request)
    {
        $post = new Post;
        $post->title = $request->title;
        $post->content = $request->content;
        $post->save();
        return redirect()->route('posts.index');
    }

    public function show(Post $post)
    {
        return view('posts.show', compact('post'));
    }

    public function edit(Post $post)
    {
        return view('posts.edit', compact('post'));
    }

    public function update(Request $request, Post $post)
    {
        $post->title = $request->title;
        $post->content = $request->content;
        $post->save();
        return redirect()->route('posts.index');
    }

    public function destroy(Post $post)
    {
        $post->delete();
        return redirect()->route('posts.index');
    }
}

在上面的代码中,index 方法将查询所有的文章模型实例,将结果存储在 $posts 变量中,并将该变量传递给用于渲染文章列表模板的 view 函数。其他方法采取类似的模式,并执行特定操作,例如创建文章、更新文章或删除文章。

结语

Laravel 的资源控制器是一个简单而强大的工具,可用于管理应用程序中的 CRUD 操作。通过定义资源路由和控制器方法,可以轻松地创建完整的 CRUD 功能。此外,Laravel 的资源控制器还支持验证和授权,可以帮助您在安全的环境中管理应用程序数据。