thinkphp5中url方法变量怎么拼接?

+'<a href="{:url('edit_user',"id='+currData[i].id+'")}" class="layui-btn layui-btn-small layui-btn-normal">编辑</a>'+

图片描述

上面这段id变量显示不正确,我不知道怎么拼接才对。如果我把“+currData[i].id+”替换成数字是能正常显示的。如下

+'<a href="{:url('edit_user',"id=51")}" class="layui-btn layui-btn-small layui-btn-normal">编辑</a>'+

图片描述

阅读 8.5k
5 个回答

在js中使用字符替换

var url="{:u('edit_user',['id'=>'data_id'])}";
url = url.replace('data_id',data_id);

data_id是你的变量
然后把url加到你的href里面应该就可以了

直接"/xx/xx/?id=$xxx"可以不用URL方法

模版中的 {:url()} 函数,需要在服务器端渲染,然后在浏览器中输出的是渲染的结果。
渲染完成后,你在浏览器段无论怎么调用 {:url()} 都是徒劳的

@elux_ljl 的思路就是对的,不过 ThinkPHP5 中的 u函数改成了 url了。

模版中定义:

//你需要增加的部分开始
var url = function(action, id){
    var tpl =  '{:url("__ACTION__", "id=__ID__")}';    //不用管,ThinkPHP会自动解析为字符串
    return tpl.replace('__ACTION__', action).replace('__ID__', id);
}
//你需要增加的部分结束

//为了配合你的代码,先构造前后部分
var currData = [{id:1}];
var i = 0;
''
//你需要改动的部分开始
+'<a href="' + url('edit_user',currData[i].id) + '" class="layui-btn layui-btn-small layui-btn-normal">编辑</a>'+
//你需要改动的部分结束
''

在浏览器中查看时,ThinkPHP会先在服务器端渲染模版,最终生成的代码如下;

//你需要增加的部分开始
var url = function(action, id){
    var tpl =  '__ACTION__/id/__ID__';    //不用管,ThinkPHP会自动解析为字符串
    return tpl.replace('__ACTION__', action).replace('__ID__', id);
}
//你需要增加的部分结束

//为了配合你的代码,先构造前后部分
var currData = [{id:1}];
var i = 0;
''
//你需要改动的部分开始
+'<a href="' + url('edit_user',currData[i].id) + '" class="layui-btn layui-btn-small layui-btn-normal">编辑</a>'+
//你需要改动的部分结束
''

currData[i].id 没有被解析,先把这个变量打印出来,或者先赋值给一个变量,然后再写进链接里。

这都是啥啊大哥 前端变量传到后端方法里 还指望正确解析 大兄弟啊 凡事得认真啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题