ThinikPHP 前端URL模式
一 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模式相关推荐
- PHP与前端协作模式的理解
PHP与前端协作模式的理解(和PHP基础) 文章目录 PHP与前端协作模式的理解(和PHP基础) 前言 一.用PHP来搭建一个网站? 二.前后交互 接收来自前端的数据 接收流程举例 总结 前言 202 ...
- 无组件架构:你不需要知道的“新一代”前端架构模式
PS:这是一种很好玩的前端架构模式,可以创造出无限的乐趣.你不一定需要知道它,但是它真的很好玩.我写这篇文章主要是因为好玩,也没有啥新东西. 很高兴在过去的几年里,微前端已经成为前端架构的一个共识式的 ...
- 前端路由模式详解(hash和history)
前端路由模式详解(hash和history) 前端路由有两种模式:hash 模式和 history 模式,接下来分析这两种模式的实现方式和优缺点. hash 模式 hash 模式是一种把前端路由的路径 ...
- php 前端控制器,前端控制器模式
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...
- Java前端控制器模式
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...
- ThinkPHP URL模式和URL重写
现在用的版本是TP3.1.3,这两天总是遇到NotFound的错误,解析路径错误,所以认真研究了一下手册,发现问题出在URL模式上面. URL模式 一般是使用U方法来生成路径,U方法的定义规则如下(方 ...
- 【设计模式】前端控制器模式
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
- 【MVC模式】Front前端控制器模式、Jsp Model1 和 Jsp Model2、MVC思想
Front前端控制器模式 Front前端控制器模式,是一种JavaEE模式:用一个servlet控制主入口,然后根据不同的情况,将请求分发给相应的处理程序. Jsp Model1 和 Jsp Mode ...
最新文章
- android 动画x轴旋转,Android Roate3dAnimation实现围绕y轴竖直方向或者绕x轴方向旋转的3d动画效果...
- poi 拆分带图片的word_学会这2招,再多的“表格编号”都能轻松解决!【Word教程】...
- R语言基础练习与入门实践
- js_sqlite_ADODB.Connection
- 解决push的时候有时候会卡一下的问题
- Android中调用另一个Activity并返回结果-以模拟选择头像功能为例
- 1.Consul 简介和环境搭建
- PTA c语言 冒泡法排序
- java的Junit单元测试
- android布局配置
- c语言funcode空格消失的函数,funcode海底世界练习c语言
- 非线性系统离散线性化方法(二)
- MATLAB运行cpp文件(从配置到运行)
- 关于数组中的大括号{}和数组的遍历
- 一级域名二级域名区别
- java实现多图片打包下载(附前后端代码)
- PDF是如何在线分割的?
- 图解海康威视摄像头和硬盘录像机的网络连接与端口映射
- javaweb mysql 连接池 c3p0 配置_javaWeb_JDBC_c3p0数据库连接池
- 时域采样与频域采样实验报告_使用网络分析仪进行时域分析