Laravel学习三:路由以及跳转和重定向用法总结

2023年8月4日13:06:53

1、路由的定义规则:

laravel 中路由规则可以自己定义!然后去使用。路由文件的位置在routes/web.php

1)、路由的定义格式:Route::请求方式(‘请求的URL’, 匿名函数或控制器响应的方法)

例;Route::get(‘/’,function(){return ‘hello word’});函数的返回值,就是请求的响应。
2)、路由中请求类型:

Route::get(‘$url’, $callback);
Route::post(‘$url’, $callback);
Route::put(‘$url’, $callback);
Route::patch(‘$url’, $callback);
Route::delete(‘$url’, $callback);
Route::option(‘$url’, $callback);

有时候还需要注册路由响应多个http请求,可以通过match()方法来实现,或用any()方法注册一个路由来响应所有的http请求。

例:

Route::match(['get','post'],'/',function(){
//
});
Route::any('foo',function(){
//
});

3)、路由的传参:在访问的时候也可以进行传参,传的参数要用{}括起来,参数分为可选参数和必选参数

必选参数:有时候我们需要在路由中捕获URL片段,比如,要从URL中获得用户ID ,需要通过如下方式定义路由参数:

可选参数:有时候可能需要指定可选的路由参数,这可以通过在参数名后面加一个?标记实现,这种情况下要给相应变量指定默认值。

//必选参数
Route::get('user/{id}',function($id){
    return 'User'.$id;
});
//可选参数
Route::get('user/{name?}',function($name=null){
    return $name;
});
Route::get('user/{name?}',function($name='John'){
    return $name;
});

当你进行访问的时候,有参数而你没有传参则会报错,如果不想让他报错就需要给参数一个默认值null,在命名传参的时候要在后面加?

例: Route::get('hello5/{id?}',function($id=null){

     return $id;

 });

路由参数也可以进行正则匹配

Route::get('hello6/{id?}',function($id=null){
   return $id;
})->where('id','[A-Za-z]+');

路由参数也可以进行多个参数,也可以进行多个参数的正则匹配

Route::get('hello7/{id}/{name}',function($id,$name){
    return $id.$name;
})->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);

路由别名:路由别名是为了拿这个方法的路径 方法route() 是用来拿到路径的

Route::get('user/{name?}',function($name='John'){
    return $name;
})->name('zhangsan');

在命令行终端,可以使用命令以下命令查看系统已经定义好的路由别名:php artisan route:list

路由群组

把许多有共同前缀的的路由,为了方便管理,放到同一个分组中,使用prefix指定路由前缀。

Route::group(['prefix'=>'admin'],function(){
    Route::get('user',function(){
       //
    });
    Route::get('food',function(){
     //
    });
});

2、配置控制器路由

Route::get('Index/index/{id?}','IndexController@index');

可以把每个控制器中的方法创建成一个群组方便管理

例:

Route::group(['prefix'=>'Index'],function(){
    //welcome方法
   Route::get('welcome','IndexController@welcome');
    //member方法
    Route::get('member/{id?}/{name?}','IndexController@member');
});

【注】反斜杠不一样

3、页面渲染:

return view('视图文件名称');

视图可以进行分目录管理,例如需要展示home/test/test3视图,则可以写成:return view('home/test/test3'),当然也支持点的写法:view('home.test.test3')

控制器给视图传递的数据形式有,字符串,数组,变量等,

view(模板文件名,数组)

view(模板文件名)->with(数组)

view(模板文件名)->with(名称,值)->with(名称,值)

compact函数是PHP内置函数,跟laravel框架没关系,该函数的作用:用于打包数组。

4、控制器调用模型:

1:在写模型时要先继承父类模型:use Illuminate\Database\Eloquent\Model;
2:模型在控制器中的使用方式有两种:  

①直接以调用静态方法为主的形式,该形式下模型不需要实例化,例如:Member::get()等价于 DB::table('member')->get();

②实例化模型然后再使用模型类:例如:$member=new Member(); $member->get();

5、在模板中展示数据要使用两个花括号    {{展示名}}

例:  {{$name}};

6、laravel跳转与响应总结

1、常规的直接响应,例:展示视图:return view('welcome');  直接返回某个字符串:return 'hello world';

2、ajax响应: return response()->json(需要json输出的数据),例:

public function test(){
    $data=Member::all();
    return response()->json($data);
}

补充:boolean值在laravel 中是不能通过return输出的,所以response也是不能响应bool值。

3、跳转响应(重定向)也有两种方式:return redirect('路由'); (该路由可以是完整的请求路由,也可以是通过route()+别名获取的路由) 或者  return redirect()->to('路由'); 

 

  • 作者:xppbin
  • 原文链接:https://blog.csdn.net/weixin_34128914/article/details/84545559
    更新时间:2023年8月4日13:06:53 ,共 2789 字。