大家应该都知道在Laravel的路由模块里,我们可以给每一个路由设定一个名字,比如:
Route::get('/blog/{blog}', 'BlogController@show')->name('blog.show')
然后就可以通过
route('blog.show', ['blog' => 1])
来获取到这个路由的访问地址,后端跳转可以用
return redirect()->route('blog.show', ['blog' => 1]);
这样做的好处是如果发生url变更,比如我想把 '/blog/{blog}'改成 '/boke/{blog}' ,只需要改路由文件,别的地方都不用调整。
但这个仅限于后端,以及blade模板可以使用,稍微上点规模的网站都会把js文件单独拎出来,不会直接写在blade模板中,这样就导致js里发ajax请求时或者页面跳转时只能将请求地址写死,比如
location.href = '/blog/' + id;
这样万一路由发生变更,还得去修改js文件,如果同一个路由被多个js调用,漏改一两个还是很容易发生的。所以我就考虑能不能在js中实现一个类似后端的route函数。
最终的解决方案很简单,两个函数就搞定。
后端部分需要实现一个函数
function route_uri($name)
{
return app('router')->getRoutes()->getByName($name)->getUri();
}
这个函数的作用是根据路由名称返回原始的路由地址,比如:
echo route_uri('blog.show'); // 会输出/blog/{blog}
前端也只需要一个函数:
let route = (routeUrl, param) => {
let append = [];
for (let x in param) {
let search = '{' + x + '}';
if (routeUrl.indexOf(search) >= 0) {
routeUrl = routeUrl.replace('{' + x + '}', param[x]);
} else {
append.push(x + '=' + param[x]);
}
}
let url = '/' + _.trimStart(routeUrl, '/');
if (append.length == 0) {
return url;
}
if (url.indexOf('?') >= 0) {
url += '&';
} else {
url += '?';
}
url += append.join('&');
return url;
}
注:这里引用了lodash
这个函数的作用是:
route('/blog/{blog}', {blog: 1}); //返回 /blog/1
route('/blog/{blog}', {blog: 1, preview: 1}); //返回 /blog/1?preview=1
然后就很简单了,在blade模板中定义:
var routes = {
blog: {
show: '{{ route_uri('blog.show') }}',
update: '{{ route_uri('blog.update') }}',
destroy: '{{ route_uri('blog.destroy') }}'
}
};
在js文件里就可以:
$.post(route(routes.blog.update, {blog: 1}), {title: 'xxx', content: 'xxx'})
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# laravel
# route函数
# route
# Laravel中前端js上传图片到七牛云的示例代码
# vuejs+element-ui+laravel5.4上传文件的示例代码
# Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
# 详解用vue.js和laravel实现微信支付
# 详解用vue.js和laravel实现微信授权登陆
# 使用JS手写一个类似 Laravel 验证器的表单验证器
# 后端
# 很简单
# 只需要
# 跳转
# 一个函数
# 我就
# 多个
# 然后就
# 可以用
# 很容易
# 能在
# 我们可以
# 可以通过
# 这样做
# 还得
# 可以使用
# 会把
# 这篇文章
# 想把
# 能将
相关文章:
css网站制作参考文献有哪些,易聊怎么注册?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在IIS中配置站点IP、端口及主机头?
如何获取免费开源的自助建站系统源码?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
常州自助建站工具推荐:低成本搭建与模板选择技巧
javascript中对象的定义、使用以及对象和原型链操作小结
网站制作公司排行榜,抖音怎样做个人官方网站
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
,石家庄四十八中学官网?
如何快速查询网址的建站时间与历史轨迹?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何通过云梦建站系统实现SEO快速优化?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
西安大型网站制作公司,西安招聘网站最好的是哪个?
宿州网站制作公司兴策,安徽省低保查询网站?
建站主机选虚拟主机还是云服务器更好?
智能起名网站制作软件有哪些,制作logo的软件?
如何在阿里云完成域名注册与建站?
建站之星3.0如何解决常见操作问题?
SQL查询语句优化的实用方法总结
,怎么在广州志愿者网站注册?
如何选择高效可靠的多用户建站源码资源?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
西安专业网站制作公司有哪些,陕西省建行官方网站?
建站主机选哪家性价比最高?
大同网页,大同瑞慈医院官网?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
油猴 教程,油猴搜脚本为什么会网页无法显示?
C++如何编写函数模板?(泛型编程入门)
免费网站制作appp,免费制作app哪个平台好?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
安云自助建站系统如何快速提升SEO排名?
高端企业智能建站程序:SEO优化与响应式模板定制开发
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
,网站推广常用方法?
建站之星如何配置系统实现高效建站?
如何用PHP工具快速搭建高效网站?
如何快速登录WAP自助建站平台?
如何快速搭建高效香港服务器网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。