abstract:Laravel階段總結(jié) 一.路由 在routes/web.php中寫入路由 1.Route::get()來(lái)設(shè)置get請(qǐng)求的路由參數(shù)//訪問根目錄時(shí),返回welcome視圖 Route::get('/', function ()
Laravel階段總結(jié)
一.路由
在routes/web.php中寫入路由
1.Route::get()來(lái)設(shè)置get請(qǐng)求的路由參數(shù)
//訪問根目錄時(shí),返回welcome視圖 Route::get('/', function () { return view('welcome'); }); //訪問/hello時(shí),返回hello視圖 Route::get('/hello', function () { return view('hello'); });
2.Route::post()設(shè)置post請(qǐng)求的路由參數(shù)
//post請(qǐng)求hello2,返回html代碼 Route::post('hello2',function (){ return '<h1>hello2</h1>'; });
3.Route::match()匹配第一個(gè)參數(shù)數(shù)組中的請(qǐng)求方式的路由參數(shù)
//match 匹配數(shù)組中方式 Route::match(['get','post'],'hello3',function (){ return '<h1>get/post請(qǐng)求返回</h1>'; });
4.Route::any() 任何請(qǐng)求方式的路由參數(shù)
Route::any('hello4',function (){ return '<h4>任何方法</h4>'; });
5.Route::view()單請(qǐng)求方式
Route::view('/','welcome'); //訪問根目錄 返回welcome視圖
6.Route('路徑/{參數(shù)名}')路由參數(shù) {參數(shù)?}為可選參數(shù),需要在后面的閉包中傳入默認(rèn)值.求要寫到必選參數(shù)后面以防出錯(cuò)
Route::get('new2/{name}/{id?}',function ($name,$id=1){ return '我的名字'.$name.' id = '.$id; });
7.Route::get()->where(array)驗(yàn)證路由參數(shù)的規(guī)則(正則)
Route::get('new3/{name}/{id?}',function ($name,$id){ return '我的名字'.$name.' id = '.$id; })->where( ['name'=>'[a-zA-z]+', //name必須是一個(gè)或以上的字母 'id'=>'[0-9]*' //id必須是0-9的數(shù)字 ]);
8.設(shè)置控制器訪問路由 模塊/控制器@方法
Route::get('admin/index/{course?}','admin\Index@index');
--------------------------------------------------------------------------
二.控制器 在app/Http/controllers里
1.簡(jiǎn)單的一個(gè)控制器 返回視圖admin模塊/index控制器/index方法的視圖 對(duì)應(yīng)resources/views/admin/index/index.blade.php
public function index($course = 'laravel'){ return view('admin.index.index',['course'=>$course]); }
-----------------------------------------------------------------------------
三.請(qǐng)求對(duì)象
1.構(gòu)造方法注入請(qǐng)求對(duì)象
就是在構(gòu)造器中將請(qǐng)求對(duì)象以參數(shù)的形式傳入構(gòu)造方法中
這樣只要訪問這個(gè)控制器,都會(huì)觸發(fā)先觸發(fā)這個(gè)構(gòu)造方法
use Illuminate\Http\Request; class Index { protected $request = null; //構(gòu)造方法注入 public function __construct(Request $request) { $this->request = $request; dump($this->request); }
2.普通方法注入
protected $request = null; public function demo(Request $demo) { $this->request = $demo; dump($this->request); } //訪問admin 模塊的index控制器的demo方法 //Route::get('admin/demo','admin\Index@demo');
3.依賴注入方法獲取請(qǐng)求對(duì)象參數(shù) use Illuminate\Http\Request;
注入到普通方法中后,可以使用這個(gè)對(duì)象中的很多方法
也可以通過對(duì)象屬性的方法來(lái)獲取參數(shù)
public function reque(Request $request) { //獲取所有普通參數(shù) dump($request->input()); //獲取指定參數(shù) dump($request->input('name')); //獲取不存在的參數(shù) dump($request->input('salary',6000)); //僅獲取一個(gè)參數(shù) dump($request->only('name')); //獲取除了指定的其他的普通參數(shù) dump($request->except('name')); //獲取路由變量 dump($request->route('id')); // dump($request->route()); //對(duì)象屬性方法獲取參數(shù) dump($request->name); dump($request->id); }
4.助手函數(shù)requset()來(lái)獲取參數(shù)
//助手函數(shù)獲取url參數(shù) public function delete() { dump(request()->input()); //獲取指定參數(shù) dump(request()->input('name')); //獲取不存在的參數(shù) dump(request()->input('salary',7000)); //僅獲取一個(gè)參數(shù) dump(request()->only('name')); //獲取除了指定的其他的普通參數(shù) dump(request()->except('name')); //獲取路由變量 dump(request()->route('id')); //對(duì)象屬性方法獲取參數(shù) dump(request()->name); dump(request()->id); }
-------------------------------------------------------------------------------
四.響應(yīng)對(duì)象
1.返回字符串
Route::get('admin/test',function (){ return 'laravel'; })
2.返回?cái)?shù)組,會(huì)自動(dòng)轉(zhuǎn)換為json格式
Route::get('admin/test2',function (){ return ['name'=>'darwin','age'=>20]; });
3.返回對(duì)象 use Illuminate\Http\Response;
setContent()設(shè)置內(nèi)容
header()設(shè)置請(qǐng)求頭
cookie()設(shè)置cookie()
use Illuminate\Http\Response; Route::get('admin/test3',function (Response $response){ return $response->setContent('塞爾達(dá)天下第一'); }); Route::get('admin/test4',function (Response $response){ return $response->setContent('塞爾達(dá)天下第一') ->header('content-type','application/json') ->cookie('name','塞爾達(dá)'); });
4.助手函數(shù) response('內(nèi)容')
Route::get('admin/test5',function (){ return response('塞爾達(dá)天下第一!!!')->setContent('真的!!!') ->header('content-type','application/json') ->cookie('name','塞爾達(dá)'); });
5.視圖響應(yīng) view()返回對(duì)應(yīng)視圖模板
Route::get('admin/test6',function (){ return response()->view('welcome'); });
6.轉(zhuǎn)換json格式 json()
Route::get('admin/test7',function (){ return response()->json(['name'=>'darwin','age'=>20]); });
Correcting teacher:天蓬老師Correction time:2019-01-21 17:49:43
Teacher's summary:其實(shí)一個(gè)訪問 , 應(yīng)該從路由開始, 這是非常自然的, 其中閉包路由, 無(wú)疑是最簡(jiǎn)單的, 也是最方便的,可以做非常多的事