700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 修改Laravel中url()函数生成URL的根地址办法介绍

修改Laravel中url()函数生成URL的根地址办法介绍

时间:2019-11-02 08:30:05

相关推荐

修改Laravel中url()函数生成URL的根地址办法介绍

后端开发|php教程

Laravel,地址,生成

后端开发-php教程

这篇文章主要给大家介绍了关于如何修改Laravel中url()函数生成URL根地址的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用laravel具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

柯林源码上传,vscode终端终止命令,ubuntu泛生,tomcat设置日志不打,kalilinux爬虫,php 提交给自己,英语seo怎么写广告,微信公众号第三方网站源码,我们是谁 模板 下载地址lzw

前言

人人贷源码,vscode插件运行方式,ubuntu开发mfc,tomcat 前台启动,农田爬虫,php从入门到精通第三版,品牌推广计划seo公司,企业网站带手机后台,源码之家discuz模板lzw

本文主要给大家介绍了修改Laravel中url()函数生成URL的根地址的相关内容,相信大家都晓得 Larevel 的一票帮助函数中有个 url(),可以通过给予的目录生成完整的 URL,是非常方便的一个函数:

发邮箱发卡源码,vscode不能运行命令,ubuntu 终端全选,tomcat从哪里启动,蛛蛛爬虫,dj源码php,什么是seo分析工具,帝国网站免费手机模板,微信投票制作网站模板lzw

// return: https://skin.dev/user/profileurl(user/profile)

但是这玩意生成的 URL 中要补完的部分是框架内部根据 Request 自动判断的,而自动判断出的东西有时候会出错(譬如在套了一层反向代理之类的情况下)。

文档上并没有提到我们要如何才能自定义它生成的 URL 中的根地址和协议头部分(http(s)),这就非常吃瘪了。那我们要咋办呢?

首先我们来看看 url() 被定义的位置:

# File: src/Illuminate/Foundation/helpers.php/** * Generate a url for the application. * * @param string $path * @param mixed $parameters * @param bool $secure * @return Illuminate\Contracts\Routing\UrlGenerator|string */function url($path = null, $parameters = [], $secure = null){ if (is_null($path)) { return app(UrlGenerator::class); } return app(UrlGenerator::class)->to($path, $parameters, $secure);}

可以看到,它从 Laravel 的服务容器中解析出了一个 Illuminate\Contracts\Routing\UrlGenerator,并且把参数转交给了这个对象的 to 方法。

而这个 UrlGenerator 类是在 src/Illuminate/Routing/RoutingServiceProvider.php 这个服务提供者中被绑定到服务容器上去的:

/** * Register the URL generator service. * * @return void */protected function registerUrlGenerator(){ $this->app[url] = $this->app->share(function ($app) { // 略 $url = new UrlGenerator( $routes, $app->rebinding( equest, $this->requestRebinder() ) ); return $url; });}

这也就意味着我们可以随时通过 url 这个 abstract 来访问服务容器中的这个 UrlGenerator,并且修改它。

而且它也确实暴露了我们需要的方法:forceSchema 和 forceRootUrl。

修改 url() 函数生成的 URL 中的根地址的代码如下:

// 用它提供的方法检测 URL 是否有效if (app(url)->isValidUrl($rootUrl)) { app(url)->forceRootUrl($rootUrl);}// 强制生成使用 HTTPS 协议的 URLapp(url)->forceSchema(https);

上面那些代码推荐放在自定义的 ServiceProvider,这样之后所有的 url() 函数生成的链接都会使用上面定义的根地址和协议了。

所以说啊,要真正掌握 Laravel 的那些东西,光看文档还是不够的。而且 Laravel 的源码文档做的很不错,读起来很清晰,能学到不少东西。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。