Laravel资源控制器和资源路由是在Laravel中创建快速CRUD应用程序的非常快捷的函数。对于资源(resource),您必须在laravel应用程序上做两件事。首先,您必须在laravel上创建资源路由,它们默认提供插入(insert),更新(update),查看(view),删除(delete)路由,其次,您必须创建资源控制器,该控制器将提供用于插入(store),更新(update),查看(show)和删除(destroy)的方法。
首先,无涯教程必须了解为什么选择资源路由而不是其他路由。以前总是为应用程序声明不同的路由,例如下面的代码:
CRUD Route:
Route::get('items',['as'=>'items.index','uses'=>'[email protected]']);
Route::post('items/create',['as'=>'items.store','uses'=>'[email protected]']);
Route::get('items/edit/{id}',['as'=>'items.edit','uses'=>'[email protected]']);
Route::patch('items/{id}',['as'=>'items.update','uses'=>'[email protected]']);
Route::delete('items/{id}',['as'=>'items.destroy','uses'=>'[email protected]']);
Route::get('items/{id}',['as'=>'items.view','uses'=>'[email protected]']);
如您在路由声明上方所见,必须为crud应用程序模块创建6条路由。这里可以使用资源路由(resource)简单地创建这六条路由:
Resource Route:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ItemController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::resource('items', ItemController::class);
现在,您可以运行下面命令并检查创建路由列表:
php artisan route:list
现在有以下输出,就像所创建的路由一样:
+--------+-----------+-------------------+---------------+--------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------+---------------+---------------------------------------+--------------+
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | items | items.index | App\Http\Controllers\[email protected] | web |
| | POST | items | items.store | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | items/create | items.create | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | items/{item} | items.show | App\Http\Controllers\[email protected] | web |
| | PUT|PATCH | items/{item} | items.update | App\Http\Controllers\[email protected] | web |
| | DELETE | items/{item} | items.destroy | App\Http\Controllers\[email protected] | web |
| | GET|HEAD | items/{item}/edit | items.edit | App\Http\Controllers\[email protected] | web |
+--------+-----------+-------------------+---------------+---------------------------------------------+---------+
好的,现在通过使用下面命令创建资源控制器:
Resource Controller Command:
php artisan make:controller ItemController --resource --model=Item
成功运行以上命令后,无涯教程打开ItemController控制器。
app/Http/Controllers/ItemController.php
<?php
namespace App\Http\Controllers;
use App\Models\Item;
use Illuminate\Http\Request;
class ItemController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
}
/**
* Display the specified resource.
*
* @param \App\Item $item
* @return \Illuminate\Http\Response
*/
public function show(Item $item)
{
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Item $item
* @return \Illuminate\Http\Response
*/
public function edit(Item $item)
{
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Item $item
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Item $item)
{
}
/**
* Remove the specified resource from storage.
*
* @param \App\Item $item
* @return \Illuminate\Http\Response
*/
public function destroy(Item $item)
{
}
}
好的,这样可以简单地使用资源路由和控制器,为项目制作快速的CRUD模块。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)