下面由Laravel教程欄目給大家介紹Laravel之路由請(qǐng)求方式、路由傳參,希望對(duì)需要的朋友有所幫助!
1、路由請(qǐng)求方式____文件路徑app->routes->web.php
//get請(qǐng)求方式 Route::get('user/show',function(){ return '世間安得兩全法,不負(fù)如來(lái)不負(fù)卿;萬(wàn)般皆是命,半點(diǎn)不由人';}); //post請(qǐng)求方式 Route::post('edit',function(){ return '萬(wàn)般皆是命,半點(diǎn)不由人';}); //多請(qǐng)求路由 Route::match(['get','post'],'user/register',function(){ return '多請(qǐng)求路由register';}); //任意請(qǐng)求 Route::any('user/wall'function(){ return '任意請(qǐng)求';});
2、路由傳參app->routes->web.php
//路由傳參,可傳多個(gè)參數(shù) Route::get('user/{id}/{name}',function($id,$name){ return '路由傳參————'.$id.$name;}); //路由可選參數(shù) Route::get('page/{page?}',function($page=1){ return 'page'.$page;});
3、參數(shù)類(lèi)型限制app->routes->web.php
//參數(shù)類(lèi)型限制Route::get('choice/{id}/{name}',function($id,$name){ return 'choice參數(shù)類(lèi)型限制'.$id.$name;})->where(['id'=>'d+','name'=>'[a-zA-Z]+']);
4、文件
1.2 配置虛擬主機(jī)
注意,在項(xiàng)目路徑public下
修改虛擬主機(jī)配置文件,在apache添加如下代碼:
<VirtualHost *:80>DocumentRoot "D:/xampp/htdocs/<project>/public"ServerName ddd.com</VirtualHost>host文件 127.0.0.1 ddd.com
第2章 路由器
路由簡(jiǎn)介
1,簡(jiǎn)單的說(shuō)就是將用戶(hù)的請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的程序去處理
2,作用建立url和程序之間的映射
3,請(qǐng)求類(lèi)型get,put,post,patch,delete等
任何框架都離不開(kāi)路由器,TP是通過(guò)地址欄規(guī)則生成,如:xxx.com/home/user/add;
2.1 路由器如何調(diào)用控制器
laravel的路由器與控制器的關(guān)系,需要明確的在/routes/web.php
文件中明確定義.
格式如下 :
基礎(chǔ)路由/* 當(dāng)用 GET 方式訪(fǎng)問(wèn) xx.com/yy 這個(gè)地址的時(shí)候用匿名函數(shù)去響應(yīng) . */Route::get('/yy', function(){return '123';});/* 當(dāng)用 POST 方式訪(fǎng)問(wèn) xx.com/zz 這個(gè)地址時(shí),用 匿名函數(shù)去響應(yīng) . */Route::post('/zz', function(){return '123';});/* 當(dāng) GET 訪(fǎng)問(wèn)網(wǎng)站根目錄 "/" 時(shí),用第2個(gè)參數(shù)的匿名函數(shù)去響應(yīng) . */Route::get('/', function () {return 'hello';})多請(qǐng)求路由/* 不管是GET還是POST方法,訪(fǎng)問(wèn) xx.com/user 時(shí),都用 XxController 中的 method() 方法去響應(yīng) . */Route::match(['get','post'] , '/user' , 'XxController@method')/* GET,POST,PUT,DELETE.. 任何方法訪(fǎng)問(wèn) xx.com/test, 都用第2個(gè)參數(shù)中的匿名函數(shù)去響應(yīng) . */Route::any('/test', function () {return 'Hello World';});注意: 如果同一個(gè)路由被寫(xiě)了2次 則以最后一次路由為準(zhǔn)!
2.2路由器與傳遞參數(shù)
/* 下例是指 xx.com/user/123 這樣的 URL,user 后面的值將會(huì)捕捉到, 并自動(dòng)傳遞給控制器的方法或匿名函數(shù) */Route::get('user/{id}', function ($id) {return 'User '.$id;});/* 下例是指 xx.com/user/{name}/{id} 這樣的 URL,user 后的參數(shù), 會(huì)被捕捉到 , 并自動(dòng)傳遞給控制器的方法或匿名函數(shù) */Route::get('user/{name}/{id}', function ($name, $id) {return 'user_'.$name.$id;});如果沒(méi)有傳遞參數(shù),則會(huì)報(bào)錯(cuò);2.3 傳遞可選參數(shù) 在路由 參數(shù) 的花括號(hào)最后 加上 ?(問(wèn)號(hào)) 即可 Route::get('user/{name?}', function ($name = null) {return $name;});Route::get('user/{name?}', function ($name = 'John') {return $name;});
2.4 參數(shù)限制
在 TP 中,自動(dòng)驗(yàn)證寫(xiě)在 Model 里,不夠靈活. laravel把參數(shù)限制寫(xiě)在方法或者路由中.普通形式:->where('要限制的參數(shù)名','限制規(guī)則(正則,不用斜線(xiàn)//)');數(shù)組形式:->where(['要限制的參數(shù)名1'=>'限制規(guī)則1(正則,不用斜線(xiàn)//)','要限制的參數(shù)名2'=>'限制規(guī)則2(正則,不用斜線(xiàn)//)']);Route::get('user/{name}', function ($name) {//})->where('name', '[A-Za-z]+');Route::get('user/{id}', function ($id) {//})->where('id', '[0-9]+');Route::get('user/{id}/{name}', function ($id, $name) {//})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);注意 : 路由參數(shù)不能包含中橫線(xiàn) "-",參數(shù)會(huì)被理解為變量名,所以不能有'-',下劃線(xiàn)是可以滴;
1、路由請(qǐng)求方式____文件路徑app->routes->web.php
//get請(qǐng)求方式Route::get('user/show',function(){ return '世間安得兩全法,不負(fù)如來(lái)不負(fù)卿;萬(wàn)般皆是命,半點(diǎn)不由人';});//post請(qǐng)求方式 Route::post('edit',function(){ return '萬(wàn)般皆是命,半點(diǎn)不由人';}); //多請(qǐng)求路由Route::match(['get','post'],'user/register',function(){ return '多請(qǐng)求路由register';});//任意請(qǐng)求Route::any('user/wall'function(){ return '任意請(qǐng)求';});
2、路由傳參app->routes->web.php
//路由傳參,可傳多個(gè)參數(shù)Route::get('user/{id}/{name}',function($id,$name){ return '路由傳參————'.$id.$name;});//路由可選參數(shù)Route::get('page/{page?}',function($page=1){ return 'page'.$page;});
3、參數(shù)類(lèi)型限制app->routes->web.php
//參數(shù)類(lèi)型限制Route::get('choice/{id}/{name}',function($id,$name){ return 'choice參數(shù)類(lèi)型限制'.$id.$name;})->where(['id'=>'d+','name'=>'[a-zA-Z]+']);
4、文件
1.2 配置虛擬主機(jī)
注意,在項(xiàng)目路徑public下
修改虛擬主機(jī)配置文件,在apache添加如下代碼:
<VirtualHost *:80>DocumentRoot "D:/xampp/htdocs/<project>/public"ServerName ddd.com</VirtualHost>host文件 127.0.0.1 ddd.com
第2章 路由器
路由簡(jiǎn)介
1,簡(jiǎn)單的說(shuō)就是將用戶(hù)的請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的程序去處理
2,作用建立url和程序之間的映射
3,請(qǐng)求類(lèi)型get,put,post,patch,delete等
任何框架都離不開(kāi)路由器,TP是通過(guò)地址欄規(guī)則生成,如:xxx.com/home/user/add;
2.1 路由器如何調(diào)用控制器
laravel的路由器與控制器的關(guān)系,需要明確的在/routes/web.php
文件中明確定義.
格式如下 :
基礎(chǔ)路由/* 當(dāng)用 GET 方式訪(fǎng)問(wèn) xx.com/yy 這個(gè)地址的時(shí)候用匿名函數(shù)去響應(yīng) . */Route::get('/yy', function(){return '123';});/* 當(dāng)用 POST 方式訪(fǎng)問(wèn) xx.com/zz 這個(gè)地址時(shí),用 匿名函數(shù)去響應(yīng) . */Route::post('/zz', function(){return '123';});/* 當(dāng) GET 訪(fǎng)問(wèn)網(wǎng)站根目錄 "/" 時(shí),用第2個(gè)參數(shù)的匿名函數(shù)去響應(yīng) . */Route::get('/', function () {return 'hello';})多請(qǐng)求路由/* 不管是GET還是POST方法,訪(fǎng)問(wèn) xx.com/user 時(shí),都用 XxController 中的 method() 方法去響應(yīng) . */Route::match(['get','post'] , '/user' , 'XxController@method')/* GET,POST,PUT,DELETE.. 任何方法訪(fǎng)問(wèn) xx.com/test, 都用第2個(gè)參數(shù)中的匿名函數(shù)去響應(yīng) . */Route::any('/test', function () {return 'Hello World';});注意: 如果同一個(gè)路由被寫(xiě)了2次 則以最后一次路由為準(zhǔn)!
2.2路由器與傳遞參數(shù)
/* 下例是指 xx.com/user/123 這樣的 URL,user 后面的值將會(huì)捕捉到, 并自動(dòng)傳遞給控制器的方法或匿名函數(shù) */Route::get('user/{id}', function ($id) {return 'User '.$id;});/* 下例是指 xx.com/user/{name}/{id} 這樣的 URL,user 后的參數(shù), 會(huì)被捕捉到 , 并自動(dòng)傳遞給控制器的方法或匿名函數(shù) */Route::get('user/{name}/{id}', function ($name, $id) {return 'user_'.$name.$id;});如果沒(méi)有傳遞參數(shù),則會(huì)報(bào)錯(cuò);2.3 傳遞可選參數(shù) 在路由 參數(shù) 的花括號(hào)最后 加上 ?(問(wèn)號(hào)) 即可 Route::get('user/{name?}', function ($name = null) {return $name;});Route::get('user/{name?}', function ($name = 'John') {return $name;});
2.4 參數(shù)限制
在 TP 中,自動(dòng)驗(yàn)證寫(xiě)在 Model 里,不夠靈活. laravel把參數(shù)限制寫(xiě)在方法或者路由中.普通形式:->where('要限制的參數(shù)名','限制規(guī)則(正則,不用斜線(xiàn)//)');數(shù)組形式:->where(['要限制的參數(shù)名1'=>'限制規(guī)則1(正則,不用斜線(xiàn)//)','要限制的參數(shù)名2'=>'限制規(guī)則2(正則,不用斜線(xiàn)//)']);Route::get('user/{name}', function ($name) {//})->where('name', '[A-Za-z]+');Route::get('user/{id}', function ($id) {//})->where('id', '[0-9]+');Route::get('user/{id}/{name}', function ($id, $name) {//})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);注意 : 路由參數(shù)不能包含中橫線(xiàn) "-",參數(shù)會(huì)被理解為變量名,所以不能有'-',下劃線(xiàn)是可以滴;