📅  最后修改于: 2023-12-03 15:17:13.508000             🧑  作者: Mango
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 的资源控制器还支持验证和授权,可以帮助您在安全的环境中管理应用程序数据。