laravel 笔记
  • Introduction
  • 说明
  • Laravel 基础
    • 安装与配置
    • 目录结构
    • 路由配置
    • MVC 配置
    • 数据库操作
      • DB façade 方式
      • 查询构造器方式
      • Eloquent ORM 方式
      • 数据库迁移
      • 数据填充
    • 请求和响应和重定向
    • Session
    • 中间件
    • 其他
      • Artisan 命令行
  • Laraval 源码分析
    • 请求到响应的生命周期
      • 程序启动准备
      • 请求实例化
      • 处理请求
      • 响应的发送与程序终止
    • 路由
    • 补充知识点
      • 反射机制
      • Closure 类
  • 资料
  • 核心思想
    • 服务容器
    • 服务提供者
    • Facades(门脸模式)
  • 开发笔记
  • Artisan 命令
  • yarn
Powered by GitBook
On this page
  • 路由配置
  • 基础路由
  • 多请求路由
  • 路由参数
  • 路由别名
  • 路由群组
  • 路由中输出视图
  • 路由与控制器关联
  • 资料

Was this helpful?

  1. Laravel 基础

路由配置

Previous目录结构NextMVC 配置

Last updated 6 years ago

Was this helpful?

参考:

路由配置

请先浏览顶部的官方链接的参考文档。这里只是简单的实例。

5.4的路由位置进行了改变

  • routes/web.php 定义状态路由

  • routes/api.php 定义无状态路由

有状态和无状态区别可以参考文章:

基础路由

对应可以使用的方法有get、post、put、delete等

Route::get('basic1', function() {
    return 'Hello World';
});

Route::post('basic2', function() {
    return 'Baisc2';
});

多请求路由

对于多种请求的路由定义可以通过match和any方法实现,match需要设置请求方法数组、URL地址和请求处理函数三个参数,第一个参数要以数组的方式设置允许的请求方法,而any方法则对应所有HTTP请求方法。

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

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

路由参数

通常情况下,GET请求可以通过URL地址(QueryString)的方式向服务器传递参数,在Laravel框架中有更优雅的形式传递参数,即通过路由参数进行传递。路由参数主要针对是GET请求的情况。

以下示例,其中?代表是一个可选参数,所以当参数值存在时,函数参数会正常接收,如果不存在,则会使用定义好的闭包函数的参数默认值。

where 可以选择添加对路由参数 正则表达式的验证,只有满足正则表达式的路由参数才能匹配路由,否则无法找到对应路由。

Route::get('user/{id}', function($id) {
    return 'User-id-' . $id;
});

Route::get('user/{name?}', function($name = null) {
    return 'User-name-' . $name;
});

Route::get('user/{name?}', function($name = 'sean') {
    return 'User-name-' . $name;
});

Route::get('user/{name?}', function($name = 'sean') {
    return 'User-name-' . $name;
})->where('name', '[A-Za-z]+');


Route::get('user/{id}/{name?}', function($id, $name = 'sean') {
    return 'User-id-' . $id . '-name-' . $name;
})->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);

路由别名

路由别名相当于在在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由信息。

Route::get('user/center', ['as' => 'center', function() {
   return route('center');
}]);

这里起 了一个路由别名,以后可以使用这个路由名称产生URL地址或者重定向,如果$url=route('center');

路由群组

当一个项目很大时,会定义很多的路由,对路由进行分组将使得程序更加规范易读,而路由群组就是给某一类路由进行分组,同时给这个路由组添加中间件、前缀、子域名等,使路由定义更加简洁。

Route::group(['prefix' => 'member'], function() {


   Route::get('user/center', ['as' => 'center', function() {
       return route('center');
   }]);

   Route::any('multy2', function() {
       return 'member-multy2';
   });
});

路由中输出视图

Route::get('view', function () {
   return view('welcome');
});

路由与控制器关联

Route::get('member/info', 'MemberController@info');

Route::any('member/info', ['uses' => 'MemberController@info']);

Route::any('member/info', [
   'uses' => 'MemberController@info',
   'as' => 'memberinfo'
]);

Route::any('member/{id}', ['uses' => 'MemberController@info'])
->where('id', '[0-9]+');

Route::controller('member', 'MemberController');

资料

Laravel HTTP 路由功能
http协议和web应用有状态和无状态浅析
路由文档