濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Laravel框架路由與MVC實(shí)例詳解

Laravel框架路由與MVC實(shí)例詳解

熱門(mén)標(biāo)簽:百應(yīng)電話機(jī)器人服務(wù) 青島語(yǔ)音外呼系統(tǒng)招商 揚(yáng)州地圖標(biāo)注app 河南電銷卡外呼系統(tǒng)哪家強(qiáng) 岳陽(yáng)外呼型呼叫中心系統(tǒng)在哪里 昭通辦理400電話 山西探意電話機(jī)器人 騰訊外呼管理系統(tǒng) 山西回?fù)芡夂粝到y(tǒng)

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

1、路由

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

1.1、基本路由

最基本的路由請(qǐng)求是get與post請(qǐng)求,laravel通過(guò)Route對(duì)象來(lái)定義不同的請(qǐng)求方式。例如定義一個(gè)url為'req'的get請(qǐng)求,返回字符串‘get response':

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

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

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

1.2、多請(qǐng)求路由

如果希望對(duì)多種請(qǐng)求方式采用相同的處理,可以使用match或any:

使用match來(lái)匹配對(duì)應(yīng)的請(qǐng)求方式,例如當(dāng)以get或post請(qǐng)求req2時(shí),都返回match response:

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

any會(huì)匹配任意請(qǐng)求方式,例如以任意方式請(qǐng)求req3,返回any response:

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

1.3、請(qǐng)求參數(shù)

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

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

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

可選參數(shù):以上的參數(shù)是必須的,如果缺少某一個(gè)參數(shù)就會(huì)報(bào)錯(cuò),如果希望某個(gè)參數(shù)是可選的,可以為它加一個(gè)?,并設(shè)置默認(rèn)值,默認(rèn)參數(shù)必須為最后一個(gè)參數(shù),否則放中間沒(méi)法識(shí)別:

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

正則校驗(yàn):可以通過(guò)where對(duì)請(qǐng)求中的參數(shù)進(jìn)行校驗(yàn)

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、路由群組

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

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

這樣通過(guò)home/article就可以訪問(wèn)到該路由了。

1.5、路由命名

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

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

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

2、控制器

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

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

在route.php中將login請(qǐng)求分配到checkLog方法:

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

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

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

3、視圖

controller負(fù)責(zé)處理應(yīng)用的邏輯,應(yīng)用的顯示則由視圖View負(fù)責(zé),這體現(xiàn)了MVC中不同的邏輯之間的分離。視圖一般位于/resource/views目錄下,一般一個(gè)controller文件對(duì)應(yīng)一個(gè)視圖文件夾,因此我創(chuàng)建的視圖為:views/Login/login.blade.php。blade文件是laravel的一個(gè)模板引擎,它編譯為PHP儲(chǔ)存起來(lái)。它包含HTML語(yǔ)言,可以在其中直接使用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中通過(guò)Models與數(shù)據(jù)庫(kù)中的表進(jìn)行交互,每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)一個(gè)Model模板。laravel并沒(méi)有定義models目錄,一般可以在app目錄下新建一個(gè)models文件夾存放模板文件。例如定義一個(gè)Student模板并指定表名與主鍵:

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

在controller中通過(guò)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框架入門(mén)與進(jìn)階教程》、《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

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

您可能感興趣的文章:
  • Laravel框架路由配置總結(jié)、設(shè)置技巧大全
  • Laravel中獲取路由參數(shù)Route Parameters的五種方法示例
  • Laravel最佳分割路由文件(routes.php)的方式
  • 修改Laravel5.3中的路由文件與路徑
  • Laravel 4 初級(jí)教程之視圖、命名空間、路由
  • Laravel 5框架學(xué)習(xí)之路由、控制器和視圖簡(jiǎn)介
  • Laravel框架模板加載,分配變量及簡(jiǎn)單路由功能示例
  • Laravel框架路由和控制器的綁定操作方法
  • Laravel框架控制器,視圖及模型操作圖文詳解
  • laravel通過(guò)a標(biāo)簽從視圖向控制器實(shí)現(xiàn)傳值
  • laravel框架模型、視圖與控制器簡(jiǎn)單操作示例
  • Laravel 5框架學(xué)習(xí)之模型、控制器、視圖基礎(chǔ)流程

標(biāo)簽:婁底 湛江 鎮(zhèn)江 南陽(yáng) 黃南 寶雞 銅川 宜賓

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel框架路由與MVC實(shí)例詳解》,本文關(guān)鍵詞  Laravel,框架,路由,與,MVC,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel框架路由與MVC實(shí)例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Laravel框架路由與MVC實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    永宁县| 勐海县| 武穴市| 屏边| 汤原县| 鲁山县| 天镇县| 永胜县| 林周县| 明水县| 翁牛特旗| 黄梅县| 离岛区| 都江堰市| 广安市| 曲阳县| 柘城县| 应城市| 汝州市| 房山区| 临安市| 云阳县| 漠河县| 阿坝县| 五大连池市| 黎平县| 石嘴山市| 白河县| 徐州市| 丰镇市| 太白县| 临夏县| 科技| 南昌市| 榆树市| 香港 | 博客| 枞阳县| 山丹县| 龙江县| 察雅县|