前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel学习笔记(二)—— 路由,请求接收与转发

Laravel学习笔记(二)—— 路由,请求接收与转发

原创
作者头像
神无月
修改2020-05-09 10:16:00
3K0
修改2020-05-09 10:16:00
举报
文章被收录于专栏:小文博客小文博客

前言

对于新手而言,你可能只需要会使用Laravel就行了,这也是我第一章没写Laravel生命周期的原因。(~~其实目前我也不是蛮懂,我怕写了被打脸~~)不过,学到后面肯定是要把她(Laravel)摸透的,暂时先留个坑,学会了再来填坑。毕竟,在我写笔记的时候,我也是一个Laravel的新手、初学者。顶多就比你们学在前面一点,所以一些东西我也不是太敢写,怕自己错误的思想误导你们。所以,要是文章有错误,还请在评论中留言我更正,免得博主一人的错误变成大家的错误了。

路由文件—— routes文件夹

上篇文章我有提到routes文件夹里四个文件,web.php、api.php、 console.php 和 channels.php。这些文件都是路由文件,唯一的区别是它们给不同的入口使用。我们初学者主要探讨的还是web.php的用法。

默认路由介绍

基础路由
基础路由

默认路由文件

代码语言:javascript
复制
<?php
Route::get('/', function () {
    return view('welcome');
});

对于默认的web.php文件,它里面的路由代表什么呢?

若符合get请求,并定位到"/"路径,就返回'welcome'视图。

我们继续看看'welcome'视图文件,看看究竟是什么?

默认视图文件
默认视图文件

这就是默认的welcome视图,当我们部署好默认的Laravel项目后,打开浏览器后看到的是Laravel的默认welcome界面,就是web.php路由和welcome.blade.php视图文件起的作用。

默认首页
默认首页

基本路由

基本上一个简单的路由规则就是按如下格式:

Route::method('uri',func);

如:

代码语言:javascript
复制
Route::get('foo', function () {
    return 'Hello World';
});

参数名

注释

method:

请求方式,主要有get|post|put|patch|delete|options

uri:

标识符

func:

匿名函数,返回视图文件或者HTML源码

多请求路由 match 和 any

match用于匹配多个method,any用于匹配所有类型的请求。

代码语言:javascript
复制
Route::match(['post', 'get'],'foo', function () {
    return 'Hello World';
});#匹配post和get

Route::any('foo', function () {
    return 'Hello World';
});#匹配所有类型的请求

路由参数

用于传递参数,比如www.test.com/artice/1,获取ID为1的文章

Laravel路由中,用一对{}来表示路由参数,参数名称写入括号内。然后可以通过$参数名的形式调用

代码语言:javascript
复制
Route::get('/{name}', function ($name) {
    return $name;
});#将参数返回
路由参数
路由参数

路由别名

为以后调用路由规则做准备。 用中括号将 "as" => "name" 和 匿名函数包起来形成一个数组,这样就可以给路由添加一个别名了。

PS:别名的关键词是 as

以上个例子为例,路由别名写法如下:

代码语言:javascript
复制
Route::get('/{name}', ["as" => "name", function ($name) {
    return $name;
}]);#一个名叫 name 的路由,可以通过route('name')访问到该条路由规则

路由群组

为便于各类路由规则的管理,将同一个分类下的路由放入一个群组内。 比如:/user/add、/user/delete这种user组别的可以放在user组下的路由规则中 /admin/add、/admin/delete这种admin组别的放在admin组中。这样既方便了管理,又防止了不同类别的路由规则起冲突。具体设置方式如下:

代码语言:javascript
复制
Route::group(['prefix' => 'user'], function(){
    #这里放user组的路由规则
    Route::get('add', function () {
        return 'add';
    });

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

这样其实和以下效果一样,但是避免了过多的路由规则互相干扰,代码也更清晰。

代码语言:javascript
复制
Route::get('/user/add', function () {
    return 'add';
});

路由规则在项目开发中的主要用法

这里控制器的可能有些超纲,控制器是下一章节的内容,这一段落主要介绍开发过程中路由的基本用法。 1. 路由参数 2. 返回视图 3. 转到控制器

路由参数已经写过了,这里重点写一下转到控制器,开发中一般都是转到控制器,让控制器进行处理后返回视图和数据再输出至浏览器。

返回视图的方法可以参照默认的路由规则

代码语言:javascript
复制
<?php
Route::get('/', function () {
    return view('welcome');
});# 返回welcome视图

请求转到控制器的某个方法处理后,再输出。

web.php

代码语言:javascript
复制
<?php
Route::get('/', function () {
    return view('welcome');
});# 默认路由规则

Route::get('/{name}', 'TestController@index');# 转发请求至TestController控制器中的index方法

TestController.php

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    public function index($name){
        return 'TestController' . $name;
    }
}
路由转控制器
路由转控制器

以上只是最简单的用法,结合了路由参数和路由转发至控制器的写法。我相信屏幕前的你应该有更好的想法,那么动动指尖,完成你的想法吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 路由文件—— routes文件夹
    • 默认路由介绍
      • 基本路由
        • 多请求路由 match 和 any
          • 路由参数
            • 路由别名
              • 路由群组
                • 路由规则在项目开发中的主要用法
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档