【Laravel笔记】15. 生成URL

姚自强
2023-12-01

关于 拾年之璐

微信公众号知行校园汇,点击查看,欢迎关注

其他平台(点击蓝字可访问):

GitHub  |  Gitee  |  哔哩哔哩  |  语雀  |  简书  |  微信小程序  |  知行达摩院  

本文专栏:Laravel  点击查看系列文章

1、框架提供了 url()助手函数 ,方便我们生成各种想要 url 地址;(当然使用 URL也是可以 的)

//生成指定的url
$user = User::find(19);
return url('/user/'.$user->id);

执行结果为:

http://127.0.0.1:8000/user/101

2、如果 url() 不给参数,可以当作对象执行更多的方法;

假如访问的URL为:http://127.0.0.1:8000/user/index?name=ZhangSan&id=10001&age=1024

执行如下方法:

//得到当前url,不带参数
return url()->current();	//同:URL::current();【需要:use Illuminate\Support\Facades\URL】;
//得到当前url,带参数
return url()->full();		//同:URL::full();
//得到上一个url
return url()->previous(); 	//同:URL::previous();

结果依次为:

http://127.0.0.1:8000/user/index

http://127.0.0.1:8000/user/index?age=1024&id=10001&name=ZhangSan

//第三个结果模拟测试即可

3、使用 route() 方法,生成命名路由的 url

//创建路由
Route::any('/url/{id}','UserController@url')->name('url.id');
//任意方法中执行:
return route('url.id', ['id'=>5]);

结果为:

http://127.0.0.1:8000/url/5

4、也可以直接使用控制器,也可以返回 url

//使用控制器返回url
return action('UserController@url', ['id'=>5,'name'=>'ZhangSan']);

结果:

http://127.0.0.1:8000/url/5?name=ZhangSan

4、生成一个 签名URL,在URL 后面追加一个哈希签名字符串,用于验证;

return url()->signedRoute('url.id', ['id' => 5]);

执行结果:

http://127.0.0.1:8000/url/5?signature=c34b75b164b80959641cf6702186d6e3e2a5504e4c03c82722b00c7d092cff04

url/{id} 路由里,可以验证哈希签名

return request()->hasValidSignature();

如果正确,返回1。

以上。

 类似资料: