laravel5.8笔记四:路由
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笔记四:路由的更多相关文章
- laravel5.8笔记四:中间件
应用场景:检测登陆,控制器加载数据,传递常量 命令 //中间件创建命令 php artisan make:middleware Check 注意: 1.需要注册中间件 2.中间件命名不能重复 mi ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- 《MFC游戏开发》笔记四 键盘响应和鼠标响应:让人物动起来
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9327377 作者:七十一雾央 新浪微博:http:// ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- laravel5.3 笔记一
laravel5.3 笔记 安装环境 laravel环境,laravel中文学习论坛上面有相关的教程 创建应用 laravel new blog 其中blog就是你的应用的名字 数据迁移 php ar ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Java学习笔记四---打包成双击可运行的jar文件
写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...
- Java加密与解密笔记(四) 高级应用
术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- OpenCV3.2.0+VS2017环境配置与常见问题(巨细坑爹版)
目录 安装 常见问题 题外话:首先,配环境一定要有耐心... 本博客是本小白第一次装OpenCV成功后第一时间整理发布.用的是刚下载好的OpenCV3.2.0版,用x64编译器Debug运行(当然Re ...
- OpenStack--Havana
OpenStack provides an Infrastructure as a Service (IaaS) solution through a set ofinterrelated servi ...
- 数据结构 BM算法
BM算法是比KMP算法更快的字符串模式匹配算法.BM算法最好情况下的时间复杂度是O(n),KMP算法最好情况下的时间复杂度是O(n+m),两者最坏情况下的时间复杂度均是O(m*n).其中,n指目标串长 ...
- 3ds max学习笔记(三)--视点显示控制
显示模式:1.模型一般是以实体方式显示的,若想看线框方式,摁F3:返回实体,摁F3:2.实体加线框模式显示,摁F4:返回,摁F4:3.透明效果:ALT+X,透明显示,之后F4,显示线框:程序内的其他显 ...
- PAT基础6-2
6-2 多项式求值 (15 分) 本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=∑i=0n(a[i]×xi) 在x点的值. 函数接口定义: dou ...
- db2删除表中数据
DB2数据库系统建表后,难免会有将表中数据清空的需求,本文将为您介绍DB2数据库中四种数据删除的方法,供您参考,您可以根据实际情况来进行选择,希望能对有所帮助. 1. 使用 DELETE 语句,即: ...
- Tracing Memory access of an oracle process : Intel PinTools
https://mahmoudhatem.wordpress.com/2016/11/07/tracing-memory-access-of-an-oracle-process-intel-pinto ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- python测试开发django-51.Ajax发送post请求登录案例
前言 我想实现一个登录功能:登录的接口是另外一个地方提供,页面上点登录按钮的时候,先访问登录接口,根据接口返回json信息判断是否登录成功,登录成功页面跳转,登录不成功,在登录首页显示失败原因 登录页 ...
- [Web 前端] 我不再使用React.setState的3个原因
copy from : https://blog.csdn.net/smk108/article/details/85237838 从几个月前开始,我在新开发的React组件中不再使用setState ...