laravel隱式控制器和資源控制器-「布爾」
我們在使用laravel框架去做相對頁面和功能比較多的時候,會發現如果僅僅使用laravel基礎的使用方法,會造成我們網站的開發難度和代碼使用會非常麻煩,比如:
頁面比較多,相應的路由準備比較多(基礎路由的設置,單請求方式,單請求方法)
/*****
*Article add,del,index,update
*/
Route::get('article/add','ArticleController@add');
Route::post('article/add','ArticleController@addPost');
Route::get('article/index','ArticleController@index');
Advertisements
Route::get('article/del/{id}','ArticleController@del');
Route::matche(['get',post],'article/up/{id}','ArticleController@up');
```
比如這樣的增刪該查,基本上每個頁面都會有這麼多功能,難道我們要每個頁面都用這麼基礎的路由么,這樣使用是不會死很麻煩呢?所以,下面我們來一起學習下laravel給我們準備好的針對這種問題的解決辦法
1,隱式控制器
Laravel 讓你能夠輕易地通過定義單個路由來處理控制器類中的各種行為。首先,使用 Route::controller 方法來定義路由。controller 方法接受兩個參數。第一個參數是控制器所處理的基本 URI,第二個是控制器的類名稱:
Advertisements
如使用方法,利用隱式控制器來來書寫上述article的增刪改查:
//首先定義隱式控制器路由 app\routes.php
Route::controller('article','ArticleController');
//然後在ArticleController中定義方法
/***
*get 請求 article/add 瀏覽器中執行http://yourdomain/article/add即可
*/
public function getAdd(){
}
/***
*post 請求 article/add 提交執行http://yourdomain/article/add即可
*/
public function postAdd(){
}
/***
*get 請求 article/index 瀏覽器中執行http://yourdomain/article即可
*/
public function getIndex(){
}
/***
*get 請求 article/del/{id} 瀏覽器中執行http://yourdomain/article/del/1即可
*/
public function getDel($id){
}
/***
*get 請求 article/up 瀏覽器中執行http://yourdomain/article/up/1即可
*/
public function getUp($id){
}
/***
*post 請求 article/up/{$id} 瀏覽器中執行http://yourdomain/article/up/1即可
*/
public function postUp($id){
}
看到隱式控制器的這樣用法后與基礎路由的使用相對比,我只是聲明好一個隱式控制器的路由,相應的其他內容直接是在方法中去定義,這樣如果在網站的頁面比較多的情況下使用這種方法去處理會更加的方便!
2,資源控制器
相比如隱式控制器也是創建好一條路由只不過使用的方法會更簡單
資源控制器讓你可以輕鬆地創建與資源相關的 RESTful 控制器。例如,你可能想要創建一個用來處理應用程序保存「文章」時發送 HTTP 請求的控制器。使用 make:controller Artisan 命令,我們可以快速地創建一個像這樣的控制器:
php artisan make:controller ArticleController
此 Artisan 命令會生成 app/Http/Controllers/Article/Controller.php 控制器文件。此控制器會包含用來操作可獲取到的各種資源的方法,如:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ArticleController 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)
{
//
}
}
然後準備資源控制器路由
Route::resource('article','ArticleController');
可能會有同學有疑問,做完這些就完事了?是的,但是怎麼去相應我們的方法呢?
這一條路由聲明會創建多個路由,用來處理各式各樣和相片資源相關的的 RESTful 行為。同樣地,生成的控制器有著各種和這些行為綁定的方法,包含要處理的 URI 及方法對應的註釋。
你可以在命令行下運行
php artisan route:list
你會發現會多出很多路由,並且每條路由和我們生成的控制器中的方法相對應,如:歡迎大家來學習,並且相對比,使用的有效性