【小(xiǎo)編推薦】ThinkPHP3.2≥≠Ω∏——URL生(shēng)成

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ì)址表達式

地(dì)址表達式的(de)格式定義如(r♥₩↑ú)下(xià):

  1. [模塊/控制(zhì)器(qì)/操作(zuò≥β)#錨點@域名]?參數(shù)1=值1&參數(shù)2=值2...

如(rú)果不(bù)定義模塊的(de)話(huà) 就(jiù)表示當前模∏↓Ω塊名稱,下(xià)面是(shì)一(yī)些(xiē)簡單的(de>↓₹)例子(zǐ):

  1. U('User/add') // 生(shēng)成User控制(zhì)器(qì)的(de)add操≥<™作(zuò)的(de)URL地(dì)址
  2. U('Blog/read?id=1') // 生(shēng)成Blog控制(zh♣×ì)器(qì)的(de)read操作(zuò) 并且id為(​✘≈wèi)1的(de)URL地(dì)址
  3. U('Admin/User/select') // 生(shēng)成Admin模塊的(de)User控制(zh✘∞♠&ì)器(qì)的(de)select操作(zuò)的(de)URL地(≠§>€dì)址
參數(shù)

U方法的(de)第二個(gè)參數(shù)支持數(shù ♣)組和(hé)字符串兩種定義方式,如(rú)λ←↔果隻是(shì)字符串方式的(de)參數(shù)可(kě)以♦​在第一(yī)個(gè)參數(shù)中定™±₩≤義,例如(rú):

  1. U('Blog/cate',array('cate_id'=>1,'status'=>1))
  2. U('Blog/cate','cate_id=1&status=1')
  3. 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ù)

  1. U('Blog/cate/cate_id/1/status/1');
僞靜(jìng)态後綴

U函數(shù)會(huì)自(zì)動識别當前配ε₹置的(de)僞靜(jìng)态後綴,如(rú)果'¥'∑你(nǐ)需要(yào)指定後綴生(shēng)成URL地(dì)→©÷址的(de)話(huà),可(kě)以顯式傳∑φ'入,例如(rú):

  1. U('Blog/cate','cate_id=1&status=1','xml');

自(zì)動識别

根據項目的(de)不(bù)同URL設置,同樣的(de)U方法‌αβδ調用(yòng)可(kě)以智能(néng)地(dì)對•"∑(duì)應産生(shēng)不(bù)同的(d♦₹↔±e)URL地(dì)址效果,例如(rú)針對α​§(duì):

  1. U'Blog/read?id=1');

這(zhè)個(gè)定義為(wèi)例。

如(rú)果當前URL設置為(wèi)普通(tōng)模式的(de≤≥™ε)話(huà),最後生(shēng)成的™☆₹α(de)URL地(dì)址是(shì):

  1. 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ì):

  1. http://serverName/index.php/Home/Blog/read/∞>id/1

如(rú)果當前URL設置為(wèi)REWR↕≥≤εITE模式的(de)話(huà),同樣的(de)方法最後生(sh€ε©®ēng)成的(de)URL地(dì)址是(shìλ♣∏):

  1. 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ì):

  1. 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ì) γ≈‌址。

生(shēng)成路(lù)由地(dì)址

U方法還(hái)可(kě)以支持路(lù)由,如(rú)果我們 ↑定義了(le)一(yī)個(gè)路(lù)由規則為(w∏♥èi):

  1. 'news/:id\d'=>'News/read'

那(nà)麽可(kě)以使用(yòng)

  1. U'/news/1');

最終生(shēng)成的(de)URL地(dì)β"δ↔址是(shì):

  1. 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ú):

  1. 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ú):

  1. U('Blog/read#comment?id=1');

生(shēng)成的(de)URL地(dì)址可(kě)能(néng)是(s✘‍$αhì):

  1. http://serverName/index.php/Home/B εβ×log/read/id/1#comment