03.视图和路由分组

goer ... 2022-01-08 Laravel
  • Php
  • Laravel
大约 2 分钟

视图和路由高级

[toc]

# 视图

视图(MVC)中的 V 部分 页面能看到部分

// 视图文件  resources/views/welcome.php  -- 欢迎页面的视图文件
新建就行了
    <h3>this is a task page</h3>
1
2
3

视图路由,有三个参数:1.URI(必);2.名称(必);3.参数(选)

如果 是 resources/views/home/index.blade.php

view('home.index')

// 视图路由
Route::view('task','task');   //视图新建task.php -> xx.blade.php

// 带参数
Route::view('task','task',['id'=>10])
//视图接收参数  {{$id}}
1
2
3
4
5
6

注意:视图文件一定要 xx.blade.php 不然路由参数不能带过去

// 其他两种路由视图  通过view助手函数

Route::get('task',function (){
    return view('task',['id'=>1]);
});  //view参数1 视图文件 参数2:带的参数
1
2
3
4
5

最常用的一种

// 类似tp里面  在控制器内用view助手函数
public function index(){
    return view('task',['id'=>1]);
}
1
2
3
4

# 路由分组和命名

命名:对路由进行重命名

route() 注释函数 参数一:路由名称 参数二:参数 参数三:true/false(域名)

//命名  一般:控制器.方法
Route::get('task','TaskControllers@index')
    ->name('task.index'); //重命名

//控制器  助手函数 route()来获取路由生成的 URL 地址
public function index(){

    $url = route('task.index'); //接受到重新命名的路由
    return view('task',['id'=>1,'url'=>$url]);
}

//视图  this url:http://127.0.0.1:8000/task
<h6>this url:{{$url}}</h6>
1
2
3
4
5
6
7
8
9
10
11
12
13

也可以在路由助手传参

$url = route('task.index',['id'=>1]);

// 视图接受到的是 ?id  this url:http://127.0.0.1:8000/task?id=1

// 如果想变为 /id=1   配对好参数
Route::get('task/{id}','TaskControllers@index')
    ->name('task.index');
1
2
3
4
5
6
7

重定向:注释函数 redirect

// 新建一个控制器方法 和 一个路由

Route::get('task/url','TaskControllers@url');
public function url(){

    // 助手重定向
    return redirect()->route('task.html',['id'=>1]);

}
1
2
3
4
5
6
7
8
9

分组:路由分组功能是为了让大量路由共享路由属性,包括中间件、命名空间等; group()

// 定义空的路由列表
// 路由分组
Route::group([],function (){
    Route::get('sex',function (){
        return 'sex page';
    });
    Route::get('sex/s/{id}',function ($id=1){
        return 'sex s page id='.$id;
    })->where('$id','[0-9]+');
});

// 设置路由路径前缀  -- 不推荐
Route::group(['prefix'=>'api'],function (){
    Route::get('sex',function (){
        return 'sex page';
    });
    Route::get('sex/s/{id}',function ($id=1){
        return 'sex s page id='.$id;
    })->where('$id','[0-9]+');
});

// 推荐这种写法   -- 推荐
Route::prefix('api')->group(function (){
    Route::get('sex',function (){
        return 'sex page';
    });
    Route::get('sex/s/{id}',function ($id=1){
        return 'sex s page id='.$id;
    })->where('$id','[0-9]+');
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

// 都有两种方法 -- 推荐用第二种

  1. 中间件 middleware(['中间件'])
  2. 路由路径前缀 prefix('api') -- 路由前面加一个api
  3. 设置子域名 domain('127.0.0.1') -- 只有这样域名能访问 localhost也不行
  4. 命名空间 namespace('') -- 设置命名空间,让命名空间分配给控制器,让其得以访问