laravel route

/**
 * 一、简单路由
 * 在浏览器中输入http://blog.csdn.net/u012160319我们可以访问实验楼网站的首页,
 * 如果我们输入https://blog.csdn.net/u012160319/article/details/81607974呢?我们会来到博客的文章页面。
 * 这就是路由了,即路由系统会对用户输入的URL地址进行解析,然后分配不同的工作,有点像路由器。
 * 路由不仅可以美化 URL,还可以便于用户记忆等。
 */ 

Route::get('/', function () {
    return 'index page';
});

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

Route::get('/help',function (){
    return 'help page';
});

/**
 * 二、基本路由
 * 网站的大多数路由都定义在 app/Http/routes.php 文件中,该文件将会被
 * App\Providers\RouteServiceProvider 类加载。最基本的 Laravel 路由仅接受 URI 和一个闭包,
 * 一个url请求可能有多种类型,除了常用的GET,还可能有 POST、PUT、DELETE 等类型的请求;
 */ 


Route::post('/foo', function() {
    //该路由将匹配 post方法的 '/foo' url
});

Route::put('/foo', function() {
    //该路由将匹配 put方法的 '/foo' url
});

Route::match(['get', 'post'], '/foo', function() {
    // 该路由将匹配 get 和 post 方法的 'foo' url
});

Route::any('/foo', function() {
    // 该路由将匹配所有类型的 'foo' url
});

/**
 * 三、路由参数
 * 有时,需要从URL中获取一些参数值,比如用户的的姓名、年龄等
 */

Route::get('name/{name}', function($name){
    return 'I`m '.$name;
});

Route::get('name/{name}/age/{age}', function ($name,$age) {
    return 'I`m '.$name .' ,and my age is '.$age;
});
//可选的带参路由
Route::get('hello/{name?}',function ($name='Tom') {
    return 'Hello '.$name.'!';
});

 /**
 * 四、命名路由
 * 所谓命名路由,就是给路由起个名字,这样我们就可以通过这个名字获取到该条路由的相关信息,也更利于后期维护。
 */

Route::get('foo', ['as' => 'foo', function() {
   //命名路由方法一
}]);

Route::get('foo',function () {
    //命名路由方法二
})->name('foo');

 /**
 *五、路由群组
 *路由群组允许你共用路由属性,例如:中间件、命名空间等,你可以利用路由群组统一为多个路由设置共同属性,
 *而不需在每个路由上都设置一次。共用属性被指定为数组格式,当作Route::group方法的第一个参数。
 */

//1、共用中间件

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function () {
        //该路由将使用Auth中间件
    });

    Route::get('name', function () {
        //该路由也将使用Auth中间件
    });
});

 //2、共用命名空间
//命名空间是一种封装事物的方法,可以简单的理解为当前文件所在的位置

Route::group(['namespace' => 'Admin'], function () {
    // 控制器在「App\Http\Controllers\Admin」命名空间
    Route::group(['namespace' => 'User'], function () {
        // 控制器在「App\Http\Controllers\Admin\User」命名空间
    });
});

//3、为路由群组添加共同的前缀
//下面一系列拥有相同前缀的路由,

Route::get('user/name', function () {
    //
});

Route::get('user/age', function () {
    //
});

Route::get('user/introduction', function () {
    //
});

//可以用如下写法简写
Route::group(['prefix' => 'user'], function(){
    Route::get('name', function () {
        //
    });

    Route::get('age', function () {
        //
    });

    Route::get('introduction', function () {
        //
    });
});

//路由群组也可以添加参数
Route::group(['prefix' => 'user/{id}'], function(){
    Route::get('name', function ($id) {

    });

    Route::get('age', function ($id) {

    });

    Route::get('introduction', function ($id) {

    });
});

/**
 * 六、查看路由
 */
//可以使用url('foo')函数来生成完整的URL

Route::get('/help', function () {
    return url('/help');
});

//也可以使用route('/foo')函数来生成完整的URL
Route::get('/help', function() {
    return route('foo');
});

Route::get('/foo', function() {

})->name('foo');

/**
 * 七、正则表达式限制路由
 */

//可以使用where方法来限制参数的格式。where 方法接受参数的名称和正则表达式
Route::get('hello/{name?}', function ($name = 'Tom') {
    return 'Hello '.$name.'!';
})->where('name','[A-Za-z]+');

//多个参数使用正则表达式限制格式
Route::get('hello/{name}/age/{age}', function($name = 'Tom', $age = 11) {
    return 'I`m '.$name.' and my age is '.$age;
})->where(['name' => '[A-Za-z]+', 'age' => '[0-9]+']);

//若需要对所有路由参数添加某种限制,需要在RouteServiceProvider的boot方法中定义这些限制
/**
 * 定义你的路由模型绑定,模式过滤器等。
public function boot(Router $router){
    $router->pattern('id', '[0-9]+');
    parent::boot($router);
}
 */

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值