laravel中我們可以使用 artisan 命令來幫助我們創建控制器文件。
php artisan make:controller TestController
TestController 控制器名我們可以任意指定。文件默認會創建在 app\Http\Controllers 目錄下。
打開控制器文件,我們就可以添加自已的方法了。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function test() { echo 'test...'; } }
在路由文件 routes/web.php 中配置路由就可以訪問了。
Route::get('/test', 'TestController@test');
如何獲取用戶的輸入,一般推薦通過依賴注入的方式來獲取。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function test(Request $request) { //獲取所有請求數據 $data = $request->all(); //獲取指定請求數據 $id = $request->input('id'); } }
laravel中為我們編寫 restful 風格的代碼,提供了簡單方式,只需在創建控制器命令后面加上 --resource 選項。
php artisan make:controller OrderController --resource
laravel幫我們創建指定的方法,各自表示不同的意義和作用。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class OrderController 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) { // } }
具體方法的作用如下所示:
HTTP 方法 | URI | 控制器方法 | 路由名稱 | 作用描述 |
GET | /order | index | order.index | 顯示所有訂單列表 |
GET | /order/create | create | order.create | 顯示創建訂單頁面 |
POST | /order | store | order.store | 接收提交數據,創建訂單 |
GET | /order/{id} | show | order.show | 顯示單個訂單信息 |
GET | /order/{id}/edit | edit | order.edit | 顯示修改訂單頁面 |
PUT/PATCH | /order/{id} | update | order.update | 接收提交數據,修改訂單 |
DELETE | /order/{id} | destroy | order.destroy | 刪除訂單 |
最后我們通過 Route::resource() 來綁定上面的所有路由。
Route::resource('order', 'OrderController');
我們也可以通過命令查看,綁定的路由列表。
php artisan route:list