最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Laravel框架路由與MVC實例詳解

 更新時間:2020年01月13日 11:31:14   作者:theVicTory  
這篇文章主要介紹了Laravel框架路由與MVC,結(jié)合實例形式詳細分析了laravel框架路由、MVC的模型、視圖、控制器相關(guān)概念、原理及使用技巧,需要的朋友可以參考下

本文實例講述了Laravel框架路由與MVC。分享給大家供大家參考,具體如下:

1、路由

路由的作用就是將用戶的不同url請求轉(zhuǎn)發(fā)給相應(yīng)的程序進行處理,laravel的路由定義在routes文件夾中,默認提供了四個路由文件,其中web.php文件定義基本頁面請求。

1.1、基本路由

最基本的路由請求是get與post請求,laravel通過Route對象來定義不同的請求方式。例如定義一個url為'req'的get請求,返回字符串‘get response':

Route::get('req',function (){
  return 'get response';
});

當(dāng)我以get的方式請求http://localhost/Laravel/laravel52/public/req時,返回如下:

同理,當(dāng)定義post請求時,使用Route::post(url,function(){});

1.2、多請求路由

如果希望對多種請求方式采用相同的處理,可以使用match或any:

使用match來匹配對應(yīng)的請求方式,例如當(dāng)以get或post請求req2時,都返回match response:

Route::match(['get','post'],'req2',function (){
  return 'match response';
});

any會匹配任意請求方式,例如以任意方式請求req3,返回any response:

Route::any('req3',function (){
  return 'any response';
});

1.3、請求參數(shù)

必選參數(shù):當(dāng)以帶參數(shù)的形式發(fā)送請求時,可以在路由中進行接收,用大括號將參數(shù)括起,用/分割,例如:

Route::get('req4/{name}/{age}', function ($name, $age) {
  return "I'm {$name},{$age} years old.";
});

以get請求時將參數(shù)傳遞,結(jié)果如下:

可選參數(shù):以上的參數(shù)是必須的,如果缺少某一個參數(shù)就會報錯,如果希望某個參數(shù)是可選的,可以為它加一個?,并設(shè)置默認值,默認參數(shù)必須為最后一個參數(shù),否則放中間沒法識別:

Route::get('req4/{name}/{age?}', function ($name, $age=0) {
  return "I'm {$name},{$age} years old.";
});

正則校驗:可以通過where對請求中的參數(shù)進行校驗

Route::get('req4/{name}/{age?}', function ($name, $age=0) {
  return "I'm {$name},{$age} years old.";
})->where(['name'=>'[A-Za-z]+','age'=>'[0-9]+']);

1.4、路由群組

有時我們的路由可能有多個層級,例如定義一級路由home,其下有二級路由article,comment等,這就需要將article與comment放到home這個群組中。通過數(shù)組鍵prefix為路由article添加前綴home:

Route::group(['prefix' => 'home'], function () {
  Route::get('article', function () {
    return 'home/article';
  });
});

這樣通過home/article就可以訪問到該路由了。

1.5、路由命名

有時需要給路由起個名字,需要在定義路由時使用as數(shù)組鍵來指定路由名稱。例如將路由home/comment命名為comment,在生成url與重定向時就可以使用路由的名字comment:

Route::get('home/comment',['as'=>'comment',function(){
  return route('comment');    //通過route函數(shù)生成comment對應(yīng)的url
}]);

輸出為http://localhost/Laravel/laravel52/public/home/comment

2、控制器

route路由只對請求進行分配跳轉(zhuǎn),具體的業(yè)務(wù)邏輯則需要由控制器來處理,控制器一般封裝成為一個php類??刂破鞯奈募话惴旁赼pp/Http/Controlers文件夾下。例如新建一個LoginController類繼承自Controller,定義checkLog方法回應(yīng)登錄請求,

namespace App\Http\Controllers;
class LoginController extends Controller
{
  public function checkLog($name){
    return $name.'登錄成功';
  }
}

在route.php中將login請求分配到checkLog方法:

Route::get('login/{name}','LoginController@checkLog');

同樣的,可以為控制器路由起個名字,比如將其命名為login:

Route::get('login/{name}',['uses'=>'LoginController@checkLog','as'=>'login']);

3、視圖

controller負責(zé)處理應(yīng)用的邏輯,應(yīng)用的顯示則由視圖View負責(zé),這體現(xiàn)了MVC中不同的邏輯之間的分離。視圖一般位于/resource/views目錄下,一般一個controller文件對應(yīng)一個視圖文件夾,因此我創(chuàng)建的視圖為:views/Login/login.blade.php。blade文件是laravel的一個模板引擎,它編譯為PHP儲存起來。它包含HTML語言,可以在其中直接使用PHP,例如login.blade.php:

<!DOCTYPE Html>
<html>
  <head>
    <title>登錄界面</title>
  </head>
  <body>
    {{$name}}登錄成功
  </body>
</html>

在controller的checkLog方法中調(diào)用視圖并傳入?yún)?shù):

public function checkLog($name){
  return View('Login/login',[
    "name"=>$name
  ]);
}

4、模板

在mvc中通過Models與數(shù)據(jù)庫中的表進行交互,每個數(shù)據(jù)庫對應(yīng)一個Model模板。laravel并沒有定義models目錄,一般可以在app目錄下新建一個models文件夾存放模板文件。例如定義一個Student模板并指定表名與主鍵:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
  protected $table='student';
  protected $primaryKey='id';
}

在controller中通過Student模板查詢所有:

namespace App\Http\Controllers;
use App\Models\Student;
class Login
{
  public static function showDB(){
    $table=Student::all();
    dd($table);
  }
}

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家基于Laravel框架的PHP程序設(shè)計有所幫助。

相關(guān)文章

  • FleaPHP框架數(shù)據(jù)庫查詢條件($conditions)寫法總結(jié)

    FleaPHP框架數(shù)據(jù)庫查詢條件($conditions)寫法總結(jié)

    這篇文章主要介紹了FleaPHP框架數(shù)據(jù)庫查詢條件($conditions)寫法,結(jié)合實例形式總結(jié)分析了針對$conditions參數(shù)為整數(shù),字符串,數(shù)組等情況的使用方法及各種查詢技巧,需要的朋友可以參考下
    2016-03-03
  • Laravel 自動轉(zhuǎn)換長整型雪花 ID 為字符串的實現(xiàn)

    Laravel 自動轉(zhuǎn)換長整型雪花 ID 為字符串的實現(xiàn)

    這篇文章主要介紹了Laravel 自動轉(zhuǎn)換長整型雪花 ID 為字符串的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • php正確輸出json數(shù)據(jù)的實例講解

    php正確輸出json數(shù)據(jù)的實例講解

    今天小編就為大家分享一篇php正確輸出json數(shù)據(jù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 萬能的php分頁類

    萬能的php分頁類

    這篇文章主要為大家詳細介紹了萬能的php分頁類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • thinkphp3.2.2前后臺公用類架構(gòu)問題分析

    thinkphp3.2.2前后臺公用類架構(gòu)問題分析

    這篇文章主要介紹了thinkphp3.2.2前后臺公用類架構(gòu)問題,以實例形式較為詳細的分析了前后臺公用類的簡單調(diào)用方法,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • tp5框架使用cookie加密算法實現(xiàn)登錄功能示例

    tp5框架使用cookie加密算法實現(xiàn)登錄功能示例

    這篇文章主要介紹了tp5框架使用cookie加密算法實現(xiàn)登錄功能,結(jié)合實例形式分析了thinkPHP5使用cookie加密算法的原理及登錄功能相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • 分享下頁面關(guān)鍵字抓取www.icbase.com站點代碼(帶asp.net參數(shù)的)

    分享下頁面關(guān)鍵字抓取www.icbase.com站點代碼(帶asp.net參數(shù)的)

    這篇文章主要介紹了分享下頁面關(guān)鍵字抓取www.icbase.com站點代碼(帶asp.net參數(shù)的)的相關(guān)資料,需要的朋友可以參考下
    2014-01-01
  • php 類自動載入的方法

    php 類自動載入的方法

    在PHP5之前,各個PHP框架如果要實現(xiàn)類的自動加載,一般都是按照某種約定自己實現(xiàn)一個遍歷目錄,自動加載所有符合約定規(guī)則的文件的類或函數(shù)。 當(dāng)然,PHP5之前對面向?qū)ο蟮闹С植⒉皇翘?,類的使用也沒有現(xiàn)在頻繁。 我們來詳細探討下吧。
    2015-06-06
  • PHP將字符分解為多個字符串的方法

    PHP將字符分解為多個字符串的方法

    這篇文章主要介紹了PHP將字符分解為多個字符串的方法,通過split進行正則匹配實現(xiàn)分割字符串的功能,是非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • Laravel 修改驗證異常的響應(yīng)格式實例代碼詳解

    Laravel 修改驗證異常的響應(yīng)格式實例代碼詳解

    這篇文章主要介紹了Laravel 修改驗證異常的響應(yīng)格式,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論

中西区| 利辛县| 囊谦县| 宜城市| 鄂托克旗| 财经| 前郭尔| 宿迁市| 扎赉特旗| 绥棱县| 大同县| 闸北区| 浦东新区| 黄山市| 河东区| 汶川县| 许昌县| 沂源县| 龙井市| 东乡县| 霞浦县| 英吉沙县| 庆云县| 泗洪县| 油尖旺区| 泰顺县| 九龙坡区| 黄龙县| 枞阳县| 察雅县| 延寿县| 垦利县| 普兰县| 四子王旗| 达州市| 双鸭山市| 徐水县| 鱼台县| 西畴县| 和静县| 黄陵县|