laravel框架,必须先设置路由,才可以访问内部的控制器部分。

路由文件:routes/web.php.

基本路由

Route::get('/user', 'UserController@index');

可用的路由方法

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

重定向路由

// 重定向  访问http://claravel57.com/da 会跳转到http://claravel57.com/there
Route::redirect('da','there',);
Route::redirect('db','http://www.baidu.com',);

视图路由

Route::view('/welcome', 'welcome');
Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

路由参数

Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
  //
});

路由传参数

// 必选传参数
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
// 可选传参数,由问号决定
Route::get('user/{id?}', function ($id) {
return 'User '.$id;
});

还有很多的路由方式,可以查阅官方手册

路由在实际项目中应用

场景一:单模块路由(Index)

Route::get('/user','UserController@index');

场景二:多个模块路由 (Admin,Index,Api),采用群组路由

/*
* api路由群组
* 访问格式 http://localhost/xxx/
* @param prefix 路由别名
* @param namespace 别名对应的命名空间(Admin,Index,Api)
* */
// 路由群组 访问:http://localhost/admin/goods
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'] ,function () {
//Admin模块
//Route::get('/控制名/方法','IndexController@index');
Route::get('/goods/','IndexController@index'); });
// 路由群组 访问:http://localhost/index/index
Route::group(['prefix' => 'index', 'namespace' => 'Index'] ,function () {
//Index模块
Route::get('/index','IndexController@index'); });
// Api模块路由群组 访问:http://localhost/api/info
Route::group(['prefix' => 'api', 'namespace' => 'Api'] ,function () {
//api模块
Route::get('/info/','IndexController@index');
});

如果不使用群组路由,路由格式

Route::get('/admin/goods/index','Admin\IndexController@index');
Route::get('/Index/index/index','Admin\IndexController@index');
Route::get('/Api/info/index','Admin\IndexController@index');

使用群组路由的好处:每个模块下的路由更加美观,敲打的代码更少;多模块部署推荐使用群组路由

场景三:路由与控制器之间的传参

单个参数:Route::get('user/{id}', function ($id) { return 'User '.$id; });

多个参数:Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { // });    // 此方法有弊端(非常多的参数时候,路由会写的很长),不推荐使用,可以使用一下传参数

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

// 页面Get传参数
http://xx.com?id=1&name=MR.zhou&age=18&sex=1
// 路由web.php
Route::get('/Api/info/index','Admin\IndexController@index');
// 控制器
public function index(){
$param = Request()->input();
$name = $param['name']
}

场景四:路由引用中间件(登陆检测)

Route::get('/index','IndexController@index')->middleware('goods');

场景五:路由回滚

// 路由回滚  定义一些不存在的页面
Route::fallback(function () {
return '';
});

容易报错

除了默认路由,其他路由模式无法访问

server {
listen ;
server_name l58.com;
root "D:/phpStudy/PHPTutorial/WWW/composer/l58/public";
location / {
index index.html index.htm index.php;
#autoindex on;
try_files $uri $uri/ /index.php?$query_string; // 路由访问失效,加上此处
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}

提示类不存在:Class App\Http\Controllers\Index/IndexController does not exist

Route::get('/Api/info/index','Admin/IndexController@index');   // 错误
Route::get('/Api/info/index','Admin\IndexController@index'); // 正确

laravel5.8笔记四:路由的更多相关文章

  1. laravel5.8笔记四:中间件

    应用场景:检测登陆,控制器加载数据,传递常量 命令 //中间件创建命令 php artisan make:middleware Check 注意: 1.需要注册中间件 2.中间件命名不能重复   mi ...

  2. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  3. 《MFC游戏开发》笔记四 键盘响应和鼠标响应:让人物动起来

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9327377 作者:七十一雾央 新浪微博:http:// ...

  4. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  5. laravel5.3 笔记一

    laravel5.3 笔记 安装环境 laravel环境,laravel中文学习论坛上面有相关的教程 创建应用 laravel new blog 其中blog就是你的应用的名字 数据迁移 php ar ...

  6. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  7. Java学习笔记四---打包成双击可运行的jar文件

    写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...

  8. Java加密与解密笔记(四) 高级应用

    术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

随机推荐

  1. unity 动画无法正常播放Animation的动画问题

    1,百度得来的一种方案,留作备用: 有一个区别的地方在于新建动画之前,选中物体身上有无Animation组件: 1.没有的话,选中物体,打开Animation窗口,新建,会出现一个animation一 ...

  2. js获取浏览器屏幕的尺寸

    浏览器屏幕尺寸参照表: 如何获取屏幕宽度: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: ...

  3. 一个封装不错的 TcpClient 类

    using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading; nam ...

  4. “百度杯”CTF比赛 九月场---123

    右键查看源代码 然后构造user.php,显示空白,源码也是空白,既然上边说用户名,密码了,参考大佬的博客,放文件user.php.bak这是备份文件,一打开上边全是用户名,有戏,爆破 添加字典,也就 ...

  5. linux之测试硬盘速度篇

    作业三:dd命令测试硬盘速度 [root@localhost 桌面]# dd if=/dev/sdc2 of=/a.txt bs=2M count=2 记录了0+1 的读入 记录了0+1 的写出 10 ...

  6. django session源码剖析

    首先要明白,session和cookie,session是保存在服务器端,cookie存储在浏览器上,我们称为客户端,客户端向服务端发送请求时,会将cookie一起发送给服务端.服务端接收到请求后,会 ...

  7. Servlet(2)—java项目下web应用程序

    在java项目下手动写一个web程序 步骤: ①创建一个java项目并在根目录创建一个WebContent目录文件 ②WebContent下创建WEB-INF目录文件 ③WEB-INF下创建class ...

  8. YUV420序列转成图片

    首先声明一点,这里的YUV其实不是YUV,严格来说是YCbCr.这里就先这样称呼YUV吧.本文是关于YUV420格式的视频转成图片序列的. 关于YUV格式的图片,存储如下图所示: 举个例子,一个640 ...

  9. ASP.NET Core 中的文件上传

    ASP.NET Core上传文件 ASP.NET Core使用IFormFile来读取上传的文件内容,然后将数据写入到磁盘或其它存储空间. 添加FileUpload模型,用来接收上传的文件内容. pu ...

  10. 对类的理解(c++)

    介绍目录: 1.类成员 1.1 成员函数 1.2 构造函数 1.2.1 对构造函数的理解 1.2.2成员初始化列表 1.2.3必须使用成员初始化列表的几种情况 1.2.4对于拷贝构造函数的参数是一个引 ...