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>
  • 相关阅读:
    vscode如何将less编译到指定css目录中
    md文档的书写《二》
    关于页面scroolTop的获取
    git学习 c的某位老哥的,(侵删)
    学习git使用网址
    git,github,gitlab,码云的区别
    Git的基本使用
    php_review_day1
    shell脚本编程基础-构建基本脚本
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/BlankEye/p/2787152.html
Copyright © 2011-2022 走看看