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模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql中exists替换in的区别
- 下一篇: 实践理解计算机启动过程