模板中不同的url_model模式下传参给后端 ? &符混乱的问题

我们在模板中使用标签{{url 'Log/save'}} 生成一个地址在url_model=2时 生成的地址为 /Log/save.html,假定我们要用js传参id=1给后端,这时模板写法为

  1. var good = {id:1,name:'商品1'}
  2. $.get('{{url 'Log/save'}}' + '?id='+good.id, function() {
  3. });

此时生成的静态代码为

  1. var good = {id:1,name:'商品1'}
  2. $.get('/Log/save.html' + '?id='+good.id, function() {
  3. })

后端可正常接收参数但是若某开发人员本地的环境只支持url_model=3则生成的静态代码为

  1. var good = {id:1,name:'商品1'}
  2. $.get('/index.php?r=/Log/save' + '?id='+good.id, function() {
  3. })

因为已经有?r=这边的?号所以后面的?id=无效,此时后端无法正常接收参数,为了兼容CmlPHP中加了{{urldeper}}这个模板标签此时模板写法只要改为

  1. var good = {id:1,name:'商品1'}
  2. $.get('{{url 'Log/save'}}' + '{{urldeper}}id='+good.id, function() {
  3. })

则在url_model=2的模式下生成的地址为

  1. var good = {id:1,name:'商品1'}
  2. $.get('/Log/save.html' + '?id='+good.id, function() {
  3. })

则在url_model=3的模式下生成的地址为

  1. var good = {id:1,name:'商品1'}
  2. $.get('/index.php?r=/Log/save' + '&id='+good.id, function() {
  3. })

后端都可正常接收到参数

原文: http://doc.cmlphp.com/question/1.html