千家信息网

Laravel框架路由与MVC怎么应用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下Laravel框架路由与MVC怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面
千家信息网最后更新 2026年11月02日Laravel框架路由与MVC怎么应用

今天小编给大家分享一下Laravel框架路由与MVC怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1、路由

路由的作用就是将用户的不同url请求转发给相应的程序进行处理,laravel的路由定义在routes文件夹中,默认提供了四个路由文件,其中web.php文件定义基本页面请求。

1.1、基本路由

最基本的路由请求是get与post请求,laravel通过Route对象来定义不同的请求方式。例如定义一个url为'req'的get请求,返回字符串'get response':

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

当我以get的方式请求http://localhost/Laravel/laravel52/public/req时,返回如下:

同理,当定义post请求时,使用Route::post(url,function(){});

1.2、多请求路由

如果希望对多种请求方式采用相同的处理,可以使用match或any:

使用match来匹配对应的请求方式,例如当以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、请求参数

必选参数:当以带参数的形式发送请求时,可以在路由中进行接收,用大括号将参数括起,用/分割,例如:

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

以get请求时将参数传递,结果如下:

可选参数:以上的参数是必须的,如果缺少某一个参数就会报错,如果希望某个参数是可选的,可以为它加一个?,并设置默认值,默认参数必须为最后一个参数,否则放中间没法识别:

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

正则校验:可以通过where对请求中的参数进行校验

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这个群组中。通过数组键prefix为路由article添加前缀home:

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

这样通过home/article就可以访问到该路由了。

1.5、路由命名

有时需要给路由起个名字,需要在定义路由时使用as数组键来指定路由名称。例如将路由home/comment命名为comment,在生成url与重定向时就可以使用路由的名字comment:

Route::get('home/comment',['as'=>'comment',function(){  return route('comment');    //通过route函数生成comment对应的url}]);

输出为http://localhost/Laravel/laravel52/public/home/comment

2、控制器

route路由只对请求进行分配跳转,具体的业务逻辑则需要由控制器来处理,控制器一般封装成为一个php类。控制器的文件一般放在app/Http/Controlers文件夹下。例如新建一个LoginController类继承自Controller,定义checkLog方法回应登录请求,

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负责处理应用的逻辑,应用的显示则由视图View负责,这体现了MVC中不同的逻辑之间的分离。视图一般位于/resource/views目录下,一般一个controller文件对应一个视图文件夹,因此我创建的视图为:views/Login/login.blade.php。blade文件是laravel的一个模板引擎,它编译为PHP储存起来。它包含HTML语言,可以在其中直接使用PHP,例如login.blade.php:

      登录界面        {{$name}}登录成功  

在controller的checkLog方法中调用视图并传入参数:

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

4、模板

在mvc中通过Models与数据库中的表进行交互,每个数据库对应一个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);  }}

以上就是"Laravel框架路由与MVC怎么应用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

路由 参数 文件 方式 模板 视图 控制器 控制 应用 不同 文件夹 知识 篇文章 逻辑 处理 登录 名字 方法 目录 框架 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 广州万易互联网科技有限公司 中国互联网科技股 互联网品科技 港股互联网科技股 互联网科技小贷 壹账通互联网科技 新浪科技互联网 镁科技互联网资讯平台 湖南洣水互联网科技有限公司扣款 语蝶互联网科技有限公司 知域互联网科技有限公司大骗子 互联网公司黑科技创始人 区块链结合互联网科技 小米互联网科技园入驻 雨阳互联网卡科技有限公司 卡尔迅互联网科技有限公司 2021世界互联网领先科技成果发布 昆明中奇联合互联网科技 杭州科技互联网公司有哪些 湖北九亚互联网络科技有限公司 期待互联网科技 互联网科技公司怎么样 深圳国际航运科技和互联网 佳云科技和互联网广告 如何创新互联网科技 徐州市互联网科技有限公司 工业互联网科技成果转化 美国五大互联网科技公司市值多少 山东亿川互联网科技有限责任公司
0