一 U方法

ThinkPHP有强大的URL解析功能,支持多种URL模式,但这也为前端开发带来了困难,如果URL模式改变了,但前端手工编码调用服务端的URL也要相应的改变,否则就有问题了,因此ThinkPHP提供了一个U方法来产生特定模块,特定方法的URL。

U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]'):

U('Index/index'),产生一个指向Index Action的index方法的URL。

这个方法如果是在模板文件中,则应当如下调用

   1:  value="%{:U('Index/index')}%"

二 前端U方法技巧

前端url,有一些技巧,当动态生成链接时,比如一个商品列表,http://server/product/pid/23,其中23是产品id,php已经从数据库中查出数据,这时可以使用下面的代码直接赋值

   1:                  <foreach name="products" item="p">
   2:                    
   3:                            <a title="%{$question.phrase}%?" href="__URL__/ViewOneProduct/pid/%$p._id%        
   4:                  </foreach>

上面这种方法,如果是U方法里就不能工作了,原因是不能在’’再次引用%{}%符号,这时可以向下面这样做:

   1:  href="%{:U('/ThinkTank/ViewOneQuestion/qid/')}%%{$item._id}%" 

这是利用ThinkPHP的模板渲染能力把item._id直接输出。

上面的方法都是处理静态的URL。例如,搜索一个产品的详细信息,它依赖于用户在input中输入的产品id,在js的处理函数中,动态生产url,然后使用ajax方法调用服务器,这时问题出来了,在另外一个php框架禅道里,它提供了一个js方法用于在js输出一个特定模块的url,但ThinkPHP并没有提供这个方法,我在项目中使用了折中的方法,使用一个hidden域,把需要的URL先渲染出来,然后在js函数里,获取这个hidden域的值,并拼接参数。

   1:  <script type="text/javascript">
   2:      // 使用ajax异步post数据
   3:      $(document).ready(function() {
   4:          /* attach a submit handler to the form */
   5:          $("div.btn a").click(function(event) {
   6:   
   7:              /* stop form from submitting normally */
   8:              event.preventDefault();
   9:   
  10:              /* get some values from elements on the page: */
  11:              var linkbutton = $(this);
  12:                                                 // 获取隐藏域分阶段的连接
  13:              var url = linkbutton.attr('action_url');
  14:                                              
  15:              var content = $('#txt_writer').val();
  16:              if (content == "") {
  17:                  return;
  18:              }
  19:                                                 // 发送到服务器
  20:              /* Send the data using post and put the results in a div */
  21:              $.post(
  22:                      url, 
  23:                      {
  24:                          txt_writer : content
  25:                      },
  26:                      function(data) 
  27:                      {
  28:                          // 处理数据
  29:                      },
  30:                      "json"
  31:                  ).error(function() {
  32:                      alert('error');
  33:              });
  34:              
  35:          });
  36:      });
  37:  </script>

转载于:https://www.cnblogs.com/BlankEye/archive/2012/11/25/2787152.html

ThinikPHP 前端URL模式相关推荐

  1. PHP与前端协作模式的理解

    PHP与前端协作模式的理解(和PHP基础) 文章目录 PHP与前端协作模式的理解(和PHP基础) 前言 一.用PHP来搭建一个网站? 二.前后交互 接收来自前端的数据 接收流程举例 总结 前言 202 ...

  2. 无组件架构:你不需要知道的“新一代”前端架构模式

    PS:这是一种很好玩的前端架构模式,可以创造出无限的乐趣.你不一定需要知道它,但是它真的很好玩.我写这篇文章主要是因为好玩,也没有啥新东西. 很高兴在过去的几年里,微前端已经成为前端架构的一个共识式的 ...

  3. 前端路由模式详解(hash和history)

    前端路由模式详解(hash和history) 前端路由有两种模式:hash 模式和 history 模式,接下来分析这两种模式的实现方式和优缺点. hash 模式 hash 模式是一种把前端路由的路径 ...

  4. php 前端控制器,前端控制器模式

    前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...

  5. Java前端控制器模式

    前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...

  6. ThinkPHP URL模式和URL重写

    现在用的版本是TP3.1.3,这两天总是遇到NotFound的错误,解析路径错误,所以认真研究了一下手册,发现问题出在URL模式上面. URL模式 一般是使用U方法来生成路径,U方法的定义规则如下(方 ...

  7. 【设计模式】前端控制器模式

    前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...

  8. ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...

  9. 【MVC模式】Front前端控制器模式、Jsp Model1 和 Jsp Model2、MVC思想

    Front前端控制器模式 Front前端控制器模式,是一种JavaEE模式:用一个servlet控制主入口,然后根据不同的情况,将请求分发给相应的处理程序. Jsp Model1 和 Jsp Mode ...

最新文章

  1. android 动画x轴旋转,Android Roate3dAnimation实现围绕y轴竖直方向或者绕x轴方向旋转的3d动画效果...
  2. poi 拆分带图片的word_学会这2招,再多的“表格编号”都能轻松解决!【Word教程】...
  3. R语言基础练习与入门实践
  4. js_sqlite_ADODB.Connection
  5. 解决push的时候有时候会卡一下的问题
  6. Android中调用另一个Activity并返回结果-以模拟选择头像功能为例
  7. 1.Consul 简介和环境搭建
  8. PTA c语言 冒泡法排序
  9. java的Junit单元测试
  10. android布局配置
  11. c语言funcode空格消失的函数,funcode海底世界练习c语言
  12. 非线性系统离散线性化方法(二)
  13. MATLAB运行cpp文件(从配置到运行)
  14. 关于数组中的大括号{}和数组的遍历
  15. 一级域名二级域名区别
  16. java实现多图片打包下载(附前后端代码)
  17. PDF是如何在线分割的?
  18. 图解海康威视摄像头和硬盘录像机的网络连接与端口映射
  19. javaweb mysql 连接池 c3p0 配置_javaWeb_JDBC_c3p0数据库连接池
  20. 时域采样与频域采样实验报告_使用网络分析仪进行时域分析

热门文章

  1. php如何防止超发,PHP+redis实现的限制抢购防止商品超发功能详解
  2. weak_ptr指针编程实验
  3. c++ 顺序容器list的一个例子
  4. C 标准转换运算符const_cast
  5. [BUUCTF-pwn]——xdctf2015_pwn200
  6. matplotlib 旋转刻度_Matplotlib数据可视化:文本与坐标轴
  7. service调用的存储过程里显式commit,而导致事务不能rollback
  8. 学习使用 Manifest
  9. Fast CGI 工作原理
  10. 自编码器及其相关模型