λͺ¨λμ λΌμ°ν° μ¬μ©νκΈ°¶
μ§§μμ£Όμ μ μ© λμμ κΈμ°κΈ° νμ΄μ§, νμμ 보 보기 νμ΄μ§ λ±μΌλ‘ νλνκ³ , μλνν° λͺ¨λμμλ μνλ ννμ μ§§μμ£Όμλ₯Ό μ μνμ¬ μ¬μ©ν μ μλλ‘ μ§μν©λλ€. μΌλ¨ κ²μν λ± μΌλΆ λͺ¨λμλ§ μ μ©νμ§λ§ μμΌλ‘ μ μ© λμμ λμ± λλ €κ° μμ μ λλ€.
κΈ°λ³Έ μ¬μ©λ²¶
λΌμ΄λ―Ήμ€μμ μ§μνλ λͺ¨λ μ§§μμ£Όμλ http://example.com/mid/λλ¨Έμ§/λΆλΆ
μ ννλ‘ μ΄λ£¨μ΄μ§λλ€. λΌμ΄λ―Ήμ€λ λͺ¨λ κ΅¬μ‘°λ‘ μ΄λ£¨μ΄μ Έ μμΌλ―λ‘, midκ° μμ΄μΌ μ΄λ λͺ¨λμμ μ μν μ§§μμ£Όμλ₯Ό μ¬μ©ν μ§ κ²°μ ν μ μμ΅λλ€. (midκ° μλ κ²½μ°μλ μ΅μμ μ£Όμλ₯Ό 컨νΈλ‘€ν μ μλλ‘ νλ κΈ°λ₯μ μλλ₯Ό μ°Έκ³ νμΈμ.)
κ° λͺ¨λμ module.xml
μμ μλμ κ°μ΄ route
μμ±μ μ¬μ©νμ¬ "λλ¨Έμ§ λΆλΆ"μ μ§§μμ£Όμ ννλ₯Ό μ μν μ μμ΅λλ€.
<action name="dispBoardDelete" type="view" route="$document_srl/delete" />
μμ μμ μμ http://example.com/board/123/delete
μ κ°μ μ£Όμλ₯Ό μμ²νλ©΄ board
μ ν΄λΉνλ λͺ¨λμ dispBoardDelete
μ‘μ
μΌλ‘ μ λ¬λκ³ , $document_srl
λ³μλ νμμ²λΌ Context::get()
μΌλ‘ κ°μ Έμ¬ μ μμΌλ©° 123
μ΄λΌλ κ°μ΄ λ€μ΄κ°λλ€. μ¦, http://example.com/index.php?mid=board&act=dispBoardDelete&document_srl=123
μ£Όμλ₯Ό μμ²ν κ²κ³Ό λμΌν ν¨κ³Όμ
λλ€.
λ§μ°¬κ°μ§λ‘, μλμ κ°μ μ½λλ₯Ό μ¬μ©νμ¬ URLμ μμ±νλ©΄
getUrl('', 'mid', 'board', 'act', 'dispBoardDelete', 'document_srl', 123)
ν΄λΉ μ‘μ
μ μ§§μμ£Όμ κ·μΉμ μ¬μ©νμ¬ http://example.com/board/123/delete
λΌλ URLμ λ°νν©λλ€.
μ§§μμ£Όμ ννλ μ κ·μμΌλ‘ μ·¨κΈλμ§λ§, μμ κ°μ΄ λ¨μν λ¬Έλ² μΈμ κ°μ’ νΉμκΈ°νΈλ₯Ό νμ©νλ μ κ·μμ μ¬μ©ν μ μμ΅λλ€. μμ²ν μ£Όμλ₯Ό μ κ·μμΌλ‘ λΆμνμ¬ ν΄λΉ μ‘μ μΌλ‘ μ°κ²°μμΌ μ£Όλ κ²μ΄ μ λΆκ° μλκΈ° λλ¬Έμ λλ€. URLμ μμ±ν λμλ λ³μλ€μ μ§§μμ£Όμ ννμ λΌμλ£μ΄ μ£Όλλ°, 볡μ‘ν μ κ·μ λ¬Έλ²μ μ¬μ©νλ©΄ μ΄κ²μ΄ μ μ μλνμ§ μμ΅λλ€.
κ³ κΈ μ¬μ©λ²¶
μμ±μ΄ μλ <route>
νκ·Έλ₯Ό μ¬μ©νλ©΄ νλμ μ‘μ
μ 2κ° μ΄μμ μ§§μμ£Όμλ₯Ό μ μν μ μμ΅λλ€. μλ₯Ό λ€λ©΄ κ²μν λͺ¨λμ dispBoardWrite
μ‘μ
μ μ κΈμ μΈ λλ $document_srl
μ΄ μκ³ , κΈμ μμ ν λλ $document_srl
μ΄ μμ΅λλ€. λ°λΌμ μλμ κ°μ΄ 2κ°μ μ§§μμ£Όμλ₯Ό κ°κ° μ μν©λλ€.
<action name="dispBoardWrite" type="view">
<route route="write" />
<route route="$document_srl/edit" />
</action>
β» μ΄λ° ννλ‘ μ¬μ©ν κ²½μ° XML νκ·Έ λ«λ μμΉμ μ£ΌμνμΈμ.
μμ μμ μ²λΌ νλμ μ‘μ
μ 2κ° μ΄μμ μ§§μμ£Όμκ° μ μλ κ²½μ°, getUrl()
μ μ¬μ©ν λ $document_srl
λ³μλ₯Ό λ£μΌλ©΄ $document_srl/edit
ννμ URLμ λ°ννκ³ , λ£μ§ μμΌλ©΄ write
ννμ URLμ λ°νν©λλ€. μ¦, λμΌν μ‘μ
μ΄λΌλ μ£Όμ΄μ§ λ³μλ€κ³Ό κ°μ₯ μ λ§€μΉλλ κ²μ μλμΌλ‘ μ νν©λλ€.
μ°μ μμ¶
μ¬λ¬ μ§§μμ£Όμκ° μ¬μ©νλ λ³μκΉμ§ λͺ¨λ κ°μμ μλμΌλ‘ μ ννκΈ° μ΄λ €μ΄ κ²½μ°, priority
μμ±μ μ¬μ©νμ¬ μ°μ μμλ₯Ό μ§μ ν΄ μ£Όλ©΄ μ°μ μμκ° λμ κ²μ μ νν©λλ€.
<action name="dispBoardExample" type="view">
<route route="downtown/$baby" priority="20" />
<route route="hasta/la-vista/$baby" priority="10" />
</action>
λ¨λ λ³μ μ²λ¦¬λ²¶
λ³μκ° λ§μμ μ§§μμ£Όμμ λ€ λ€μ΄κ°μ§ μλ κ²½μ°λ λ°μν μ μμ΅λλ€. λ¨λ λ³μλ 쿼리μ€νΈλ§μΌλ‘ λΆμ΅λλ€. μλ₯Ό λ€μ΄ μμ μμ μ $comment_srl
κΉμ§ λ£μ΄μ URLμ μμ±νλ©΄ http://example.com/board/123/edit?comment_srl=456
κ³Ό κ°μ κ²°κ³Όκ° λμ΅λλ€. μ΄λ° μ£Όμλ‘ μ μνλλΌλ λ¬Έμ λ μμ΅λλ€.
λ³μ νμ μ§μ ¶
κ° λ³μμ λ€μ΄κ° μ μλ κ°μ νμ μ μ νν μ μμ΅λλ€. μλ₯Ό λ€μ΄ μλμ κ°μ΄ μ°λ©΄
<action name="dispBoardMyAction" route="$name:alpha/$number:int" />
$name
μλ μλ¬Έ μνλ²³λ§ λ€μ΄κ° μ μκ³ , $number
μλ (0λ³΄λ€ ν¬κ±°λ κ°μ) μ μλ§ λ€μ΄κ° μ μμ΅λλ€. μ¬μ©ν μ μλ ννλ μλμ κ°μ΅λλ€.
int
: μ μ (0λ³΄λ€ ν¬κ±°λ κ°μ)float
: μμ (0λ³΄λ€ ν¬κ±°λ κ°μ)alpha
: μλ¬Έ λμλ¬Έμalnum
: μλ¬Έ λμλ¬Έμ λ° μ«μhex
: 16μ§μ (0~9, a-f)word
: λ³μλͺ μΌλ‘ μ¬μ©ν μ μλ κΈμ (μλ¬Έ λμλ¬Έμ, μ«μ, μΈλλ°)any
: μ¬λμ(/)λ₯Ό μ μΈν λͺ¨λ λ¬Έμdelete
: μ무 κ²λ λ§€μΉνμ§ μμ΅λλ€.getUrl()
μ νμ λ ν΄λΉ λ³μλ μμ λ©λλ€. 쿼리μ€νΈλ§μΌλ‘λ λ ΈμΆμν€κ³ μΆμ§ μμ λ³μλ₯Ό URLμμ μμ νλ €κ³ ν λ μ¬μ©ν μ μμ΅λλ€.
μμ μμ λ€κ³Ό κ°μ΄ νμ
μ μ§μ νμ§ μκ³ λ³μλͺ
λ§ λ£μ΄μ μ§§μμ£Όμλ₯Ό μ μν κ²½μ°, _srl
λ‘ λλλ λ³μλ int
κ° κΈ°λ³Έκ°μ΄λ©° κ·Έ λ°μ λ³μλ any
κ° κΈ°λ³Έκ°μ
λλ€. μ½μ΄μμλ _srl
λ‘ λλλ λ³μμλ μ«μ μ΄μΈμ κ°μ νμ©νμ§ μκ³ μμ΅λλ€.
404 μλ¬ μ²λ¦¬¶
midλ λ§λλ° λλ¨Έμ§ μ£Όμκ° μ΄λ€ μ§§μμ£Όμ ννμλ λ§€μΉλμ§ μλ κ²½μ° 404 Not Found μλ¬κ° νμλμ΄μΌ ν©λλ€. μ½μ΄μμ μΌκ΄μ μΌλ‘ μ²λ¦¬νλ€λ©΄ κ° λͺ¨λμ νΉμ±μ λ§λ μλ¬ νλ©΄μ 컀μ€ν°λ§μ΄μ§νκΈ° μ΄λ €μ°λ―λ‘, κ° λͺ¨λμμ 404 μλ¬ νΈλ€λ¬λ₯Ό μ§μ ν μ μλλ‘ λμ΄ μμ΅λλ€.
<action name="dispBoardNotFound" type="view" error-handlers="404" />
μ΄λ κ² νλ©΄ μ ν¨νμ§ μμ μ§§μμ£Όμλ₯Ό μμ²ν κ²½μ° dispBoardNotFound
λ©μλκ° νΈμΆλ©λλ€. μ¬κΈ°μμ μλ¬ λ©μμ§λ₯Ό νμνκ±°λ λ€λ₯Έ κ³³μΌλ‘ 리λ€μ΄λ νΈνλ λ± μν©μ λ§λ μ²λ¦¬λ₯Ό νλ©΄ λ©λλ€. νμ¬λ 404 μλ¬ νΈλ€λ¬λ§ μ§μ ν μ μμ§λ§, μμΌλ‘λ 403 μλ¬ νΈλ€λ¬λ μ§μ ν μ μλλ‘ ν μμ μ
λλ€.
404 μλ¬ νΈλ€λ¬λ₯Ό μ νμ©νλ©΄ μΌμ’ μ catch-all ν¨μλ‘ νμ©ν μλ μμ΅λλ€.
λͺ¨λμμ μλ¬ νΈλ€λ¬λ₯Ό μ§μ νμ§ μμκ±°λ, mid μ λ³΄κ° μμ΄μ μ΄λ λͺ¨λμ νΈμΆν΄μΌ ν μ§ μ°Ύμ μμ‘°μ°¨ μλ κ²½μ°μλ μ½μ΄μ 404 μλ¬ νμ΄μ§κ° νμλ©λλ€.
μ μ μ§§μμ£Όμ μ μ¶
ν΅ν©κ²μμ²λΌ midκ° μμ΄λ μλνλ μ‘μ
μ κ²½μ°, global routeλ‘ μ§μ νλ©΄ http://example.com/search
μ κ°μ΄ midκ° μλ μ£Όμμμλ μ°κ²°λλλ‘ ν μ μμ΅λλ€.
<action name="IS" type="view" global-route="true">
<route route="search" />
</action>
μ΄ κΈ°λ₯μ νμ©νλ©΄ http://example.com/@μμ΄λ
μ²λΌ κ°λ¨ν μ£Όμλ₯Ό λ§λ€ μ μμ΅λλ€.
μ μ μ§§μμ£Όμλ₯Ό λ¨μ©νκ² λλ©΄ λ€λ₯Έ λͺ¨λλ€μ΄ μ¬μ©νλ midμ μΆ©λνμ¬ λκ°ν μν©μ΄ λ°μν μ μμ΅λλ€. μ½μ΄μμλ rss λ± κΈ°μ‘΄μ μ§μνλ κ² μΈμλ μ μ μ§§μμ£Όμλ₯Ό μ¬μ©νμ§ μμ μμ μ΄λ©°, μλνν° μλ£μμλ κ°κΈμ midλ₯Ό μμ±νκ³ κ·Έ λ·λΆλΆλ§ 컨νΈλ‘€νλ μ§§μμ£Όμλ₯Ό μ¬μ©νμκΈ°λ₯Ό μ κ·Ή κΆμ₯ν©λλ€.
κΈ°ν¶
- μνμΉ μ¬μ©μλ .htaccess νμΌμ μ
λ°μ΄νΈνλ©΄ μλ‘μ΄ ννμ μ§§μμ£Όμλ₯Ό μ¬μ©ν μ μμ΅λλ€. nginx μ¬μ©μλ μλ² μ€μ νμΌμ κ΅μ²΄ν΄μΌ ν©λλ€. μ€μ νμΌμ κ΅μ²΄νκΈ° μ μλ μ μ§§μμ£Όμκ° λͺ¨λ μ€λ₯λ₯Ό λΏκ² λλ―λ‘, νΈνμ± μ μ§λ₯Ό μν΄ μ§§μμ£Όμ μ¬μ© μ΅μ
μ 3λ¨κ³λ‘ ꡬλΆνμ΅λλ€. νμ¬ 1μ΄ κΈ°λ³Έκ°μ΄λ©° 2λ μ¬μ©μκ° μ§μ μ νν΄μΌ νμ±νλ©λλ€.
- μ¬μ©νμ§ μμ (0)
- XEμ νΈνλλ μ£Όμ ννλ§ μ¬μ© (1)
- λͺ¨λ μ£Όμ ννλ₯Ό μ¬μ© (2)
- μ§§μμ£Όμλ₯Ό μ μνμ§ μμ κ²½μ°
mid/act
ννμ μ§§μμ£Όμκ° μμλ‘ μμ±λ©λλ€. μλ₯Ό λ€μ΄ κ²μν μ€μ νλ©΄μ ν΄λΉνλindex.php?mid=board&act=dispBoardAdminBoardInfo
λΌλ μ£Όμλboard/dispBoardAdminBoardInfo
λ‘ μ€μ΄λ€κ³ , λ¨λ λ³μλ€μ 쿼리μ€νΈλ§μΌλ‘ λΆμ΅λλ€. - λ€λ₯Έ λͺ¨λμμ μ μν μ§§μμ£Όμλ μ μ©μ΄ κ°λ₯ν©λλ€. μλ₯Ό λ€μ΄
index.php?mid=board&act=dispMemberLoginForm
μboard/login
μΌλ‘ λ³νλ©λλ€. κ²μν λͺ¨λμλ ν΄λΉ μ§§μμ£Όμκ° μμ§λ§, νμ λͺ¨λμμdispMemberLoginForm
μ‘μ μ μ§§μμ£Όμλ₯Όlogin
μΌλ‘ μ μνκΈ° λλ¬Έμ λλ€. λ¨, λ€λ₯Έ λͺ¨λμμ λμ΄λ€ μ°λλ‘ νμ©λ (μ¦,standalone
μ΄false
κ° μλ) μ‘μ λ§ μ΄λ κ² μ¬μ©ν μ μμ΅λλ€.- κΈ°μ‘΄μ κ±°μ μ¬μ©λμ§ μλ action forward κΈ°λ₯μ μ¬νμ©νμ¬, μ΄λ° μμΌλ‘ λμ΄λ€ μΈ μ μλ ν¨μλ€ μ€ μ§§μμ£Όμλ₯Ό μ μν κ²μ λͺ¨λ action forwardμ μλ λ±λ‘λλλ‘ λ³κ²½νμ΅λλ€. λͺ¨λ μ λ°μ΄νΈλ₯Ό ν΄λ¦νλ©΄ λ©λλ€.
- μ΄ κΈ°λ₯μ ꡬννκΈ° μν΄ κ° λͺ¨λμ
module.xml
μ νμ±νλ κΈ°λ₯μ μμ ν λ€μ ꡬννμ΅λλ€. SimpleXMLμ μ¬μ©νμ¬ κΈ°μ‘΄ λ°©μλ³΄λ€ κ°κ²°νκ³ μμ μ μ΄λ©°, μΊμλ νμ©νλλ‘ λ³κ²½νμ¬ μ±λ₯ ν₯μ ν¨κ³Όκ° μμ κ²μΌλ‘ 보μ λλ€.