• 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>
  • 相关阅读:
    CircleImageManager——圆形 / 圆角图片的工具类
    自定义的开关按钮——SwitchButton
    将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网
    用纯JAVA代码来创建视图
    用自定义的RoundImageView来实现圆形图片(可加边框)
    用开源项目RoundedImageView来实现 圆形 / 圆角 / 椭圆的图片
    ImageView和onTouchListener实现,点击查看图片细节
    MySql修改字符集
    Docker下操作指令
    CentOS下Docker安装
  • 原文地址:https://www.cnblogs.com/BlankEye/p/2787152.html
Copyright © 2020-2023  润新知