什么是路由:
路由:将用户的请求按照事先规划好的方案提交给指定的控制器,或者功能函数来进行处理。
路由就是访问的地址形式。
在laravel框架中路由要进行手动配置。
访问就用路由
配置路由文件。
路由文件在自己创建的laravel文件下的routes/web.php
1.打开web.php文件后,默认为根目录文件。
跟路由一般为网站的首页。
2.路由的定义方式:
Route::请求方式(‘请求的URL’,匿名函数或控制器方法);
其中跟路由/可以省略。
例如:
Route::get('/', function () {
return "helloworld";
});
此时输出:(定义模拟主机的方法,见于,添加链接描述)https://blog.youkuaiyun.com/qq_45844648/article/details/104903532
3.路由的请求方式:
- Route::get(路径,方法);
- Route::post(路径,方法);
- Route::put(路径,方法);
- Route::patch(路径,方法);
- Route::delete(路径,方法);
- Route::options(路径,方法);
要解决“<form action="" mathod="post">”
的问题,需要以下两个解决方法;
注册路由响应多个HTTP请求------可以通过match方法来实现。或者,可以用any方法注册一个路由来响应所有的HTTP请求。
使用方法:
Route::match([‘get’,‘post’],’/’,function(){
//
});
常见的四个方法:
get:表示匹配请求类型为get的请求;
post:表示匹配请求类型为post的请求;
match:表示匹配用户指定的几个请求类型(通过第一个参数去指定)的请求;
any:表示匹配路由所支持的全部请求类型;
如果路由方法和实际请求的类型不一样则会报错。
***路由参数:***分为必选参数和可选参数。
- 必选参数,一旦路由中定义过了,则必须传递,不传递就会报错。
- 路由参数的传递通过路由地址中的(参数名)形式来进行传递,
- 例如:
Route::get('/home/{id}',function($id){ echo "输入的id是:".$id});
- 必须得赋值才可以,否则报错。
书写时必须添加值
路径/id=xxx
可选参数:
{参数名?}的形式;
注意:
路由参数除了上述两种传递方式,还支持传统路由参数传递。
url?id=xxx&aaa=xxxx
这种方式传递的参数不受路由限制,不需要在路由文件中事先定义好。
Route::get('/home1',function(){
$id=isset($_GET['id'])?$_GET['id']:1000;
return "当前id:".$id;
});
直接访问home1时,id值为1000
也可以直接输入?id=xxx,当前输出就为id=xxxxx
路由别名
相当于定义路由的时候,给路由起了一个别名,在以后的程序中可以通过,别名来获取路由的信息。
设置方法:
Route::get('/',function(){
//例如,设置一个别名为:aa
return "helloworld";
})->name('h');
在文件所在位置打开,命令行
输入php artisan route:list 回车 查看 此时根目录就添加了别名h
路由群组:
例如:home/test/test1
home/test/test2
共同点都有home为前缀,可以把这两个放置到同一个路由分组里。
使用prefix属性指定路由前缀,也就是路由中都具备的相同部分。
语法:
Route::group(公共属性键值数组,回调函数)
回调函数中放的剔除公共属性之后的路由。
Route::group(['prefix'=>"home"],function(){
Route::get('/test/test1', function () {
return "helloworld1";
});
Route::get('/test/test2', function () {
return "helloworld2";
});
});
也可以写成:
Route::group(['prefix'=>"home/test/"],function(){
Route::get('test1', function () {
return "helloworld1";
});
Route::get('test2', function () {
return "helloworld2";
});
});