Laravel resource
控制器 说白了就是创建一个具有Restful
接口形式的控制器。
restful控制器的路由写法
Route::resource('index','App\Http\Controllers\IndexController');
使用这种写法我们不需要指定控制器的方法名称,如get还是post,控制器也不需要写方法名,因为它已经提供了create()、store()、destroy() 等方法。restful控制器的创建方法
php artisan make:controller IndexController --resource
上面的命令会在 app/Http/Controllers/ 目录下创建 IndexController。 IndexController 类包含每个resource操作的方法。创建控制器的代码如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class IndexController 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 int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
注册多个restful控制器
我们可以在web.php路由中注册多个restful控制器。
1. 首先创建两个restful控制器
Php artisan make:controller IndexController
Php artisan make:controller PostController
2.在web.php中添加这两个路由
Route::resources(
['indexs'=>'IndexController',
'posts'=>'PostController']
);
3.查看路由
php artisan route:list
注册部分restful控制器方法
有时候,我们可能只想注册某些特殊的方法,laravel也是可以实现的,如下所示:
Route::resource('index','IndexController',['only' => ['create','show']]);
显而易见,上面的注册的控制器只有create()和show()方法。
使用 php artisan route:list 命令再次验证,如图所示:
restful控制器路由别名
下面注册路由别名的例子:
Route::resource('post', 'PostController',['names' => ['create' =>'post.build']]);
在命令行中输入‘php artisan route:list ’ 结果如图所示:上图显示 create() 方法的路由名称已重命名为 post.build,其默认名称为 post.create