
2014-06-26 | &n®$™bsp; 發布者:梁國(guó)芳 &nbs©±p; | &nb×∏sp;查看(kàn):3320次
Thinkphp為(wèi)了(le)配合所使用(yòng)的(de)URL模式$£♦σ,我們需要(yào)能(néng)夠動态的(de)根據當前的∏¥γ(de)URL設置生(shēng)成對(duì)應的(de)URL地(dì)址✘®α,為(wèi)此,ThinkPHP內(nèi)置提供了(↔←le)U方法,用(yòng)于URL的(de)動态生(shēng)成,可(k≈₽ε★ě)以确保項目在移植過程中不(bù)受環境的(de)影(yǐng)響。
U方法的(de)定義規則如(rú)下(xià)(方括号內(nèi)參數(shù≈<¥¥)根據實際應用(yòng)決定):
U('地(dì)址表達式',['參數(shù)'],['僞靜(jìn≠∏g)态後綴'],['顯示域名'])
地(dì)址表達式的(de)格式定義如(r♥₩↑ú)下(xià):
[模塊/控制(zhì)器(qì)/操作(zuò≥β)#錨點@域名]?參數(shù)1=值1&參數(shù)2=值2...
如(rú)果不(bù)定義模塊的(de)話(huà) 就(jiù)表示當前模∏↓Ω塊名稱,下(xià)面是(shì)一(yī)些(xiē)簡單的(de>↓₹)例子(zǐ):
U('User/add') // 生(shēng)成User控制(zhì)器(qì)的(de)add操≥<™作(zuò)的(de)URL地(dì)址U('Blog/read?id=1') // 生(shēng)成Blog控制(zh♣×ì)器(qì)的(de)read操作(zuò) 并且id為(✘≈wèi)1的(de)URL地(dì)址U('Admin/User/select') // 生(shēng)成Admin模塊的(de)User控制(zh✘∞♠&ì)器(qì)的(de)select操作(zuò)的(de)URL地(≠§>€dì)址
U方法的(de)第二個(gè)參數(shù)支持數(shù ♣)組和(hé)字符串兩種定義方式,如(rú)λ←↔果隻是(shì)字符串方式的(de)參數(shù)可(kě)以♦在第一(yī)個(gè)參數(shù)中定™±₩≤義,例如(rú):
U('Blog/cate',array('cate_id'=>1,'status'=>1))U('Blog/cate','cate_id=1&status=1')U('Blog/cate?cate_id=1&s₽♣tatus=1')
三種方式是(shì)等效的(de),都(dβ↑πōu)是(shì)生(shēng)成Blog控制(zh¥<>ì)器(qì)的(de)cate操作(zuò) 并&β♥Ω且cate_id為(wèi)1 status為(wèi)1的(de)URL地(dì)址。
但(dàn)是(shì)不(bù)允許使用(yòng)下(xi∑>à)面的(de)定義方式來(lái)傳參數 π(shù)
U('Blog/cate/cate_id/1/status/1');
U函數(shù)會(huì)自(zì)動識别當前配ε₹置的(de)僞靜(jìng)态後綴,如(rú)果'¥'∑你(nǐ)需要(yào)指定後綴生(shēng)成URL地(dì)→©÷址的(de)話(huà),可(kě)以顯式傳∑φ'入,例如(rú):
U('Blog/cate','cate_id=1&status=1','xml');
根據項目的(de)不(bù)同URL設置,同樣的(de)U方法αβδ調用(yòng)可(kě)以智能(néng)地(dì)對•"∑(duì)應産生(shēng)不(bù)同的(d♦₹↔±e)URL地(dì)址效果,例如(rú)針對α§(duì):
U('Blog/read?id=1');
這(zhè)個(gè)定義為(wèi)例。
如(rú)果當前URL設置為(wèi)普通(tōng)模式的(de≤≥™ε)話(huà),最後生(shēng)成的™☆₹α(de)URL地(dì)址是(shì):
http://serverName/index.php?m=Blog&a±¶=read&id=1
如(rú)果當前URL設置為(wèi)PA¶ ≥>THINFO模式的(de)話(huà),同樣的(de)方↔ 法最後生(shēng)成的(de)URL地(dì)址是(shì):
http://serverName/index.php/Home/Blog/read/∞>id/1
如(rú)果當前URL設置為(wèi)REWR↕≥≤εITE模式的(de)話(huà),同樣的(de)方法最後生(sh€ε©®ēng)成的(de)URL地(dì)址是(shìλ♣∏):
http://serverName/Home/Blog/read/id/∏←×β1
如(rú)果當前URL設置為(wèi)REWRITE模式,并且設置了(le<" )僞靜(jìng)态後綴為(wèi).html的(de)話¶(huà),同樣的(de)方法最後生(shēng)成的(de₹₹∏)URL地(dì)址是(shì):
http://serverName/Home/Bl♣¥<og/read/id/1.html
如(rú)果開(kāi)啓了(le)
URL_CASE_INSENSITIVE,則會(huì)統一(yī)生(shēng)成≈₽₽'小(xiǎo)寫的(de)URL地(dì) γ≈址。
U方法還(hái)可(kě)以支持路(lù)由,如(rú)果我們 ↑定義了(le)一(yī)個(gè)路(lù)由規則為(w∏♥èi):
'news/:id\d'=>'News/read'
那(nà)麽可(kě)以使用(yòng)
U('/news/1');
最終生(shēng)成的(de)URL地(dì)β"δ↔址是(shì):
http://serverName/index.php/Home/¶φ>news/1
注意:如(rú)果你(nǐ)是(shì)在模闆文(wén)件(jiàn)中直☆✘接使用(yòng)U方法的(de)話(huà)Ω ε,需要(yào)采用(yòng) {:U('參×₹≠≠數(shù)1', '參數(shù)2'&he<✔llip;)} 的(de)方式,具體(tǐ)參考模♦π✘闆的(de)使用(yòng)函數(shù)內(nèi)✘♣→容。
如(rú)果你(nǐ)的(de)應用(yòng)涉及到(dào)多(duō)↑♦個(gè)子(zǐ)域名的(de)操作(zuò)地(dì✔>÷£)址,那(nà)麽也(yě)可(kě)以在U方法裡(lǐ)Ωε ÷面指定需要(yào)生(shēng)成地(dì)址∞§♣的(de)域名,例如(rú):
U('Blog/read@blog.thinkphp.cn≈π','id=1');
@後面傳入需要(yào)指定的(de)域名即可(kě)±δ。
系統會(huì)自(zì)動判斷當前是(§♥shì)否SSL協議(yì),生(shēng)成https://。
此外(wài),U方法的(de)第4個(®¶✘↑gè)參數(shù)如(rú)果設置為(wèi)true,表示自(zì)動識别×↔♠當前的(de)域名,并且會(huì)自(zì)動根>©♣₹據子(zǐ)域名部署設置APP_SUB_DOMAIN_DEPLOY和(hé)APP_SUB_DOMAIN_RULES自(zì)動匹配生(shēng)成當前地(dìβπα)址的(de)子(zǐ)域名。
U函數(shù)可(kě)以直接生(sh•∞φēng)成URL地(dì)址中的(de)錨點,例如(rú):
U('Blog/read#comment?id=1');
生(shēng)成的(de)URL地(dì)址可(kě)能(néng)是(s✘$αhì):
http://serverName/index.php/Home/B εβ×log/read/id/1#comment
