zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    CREATE AGGREGATE
    技术文档列表
    jQuery 判断表单中多个 input text 中至少有一个不为空
    Java实现 蓝桥杯 算法提高 奥运会开幕式
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
  • 原文地址:https://www.cnblogs.com/BlankEye/p/2787152.html
Copyright © 2011-2022 走看看