2013-05-02 3 views
0

Yii 프레임 워크에서 친숙한 URL을 만들고 싶습니다.Yii 맞춤 URL 라우팅

예 :

mysitename.com/country/city/travelling-type 

또는

mysitename.com/country/city/travelling-type/price 
mysitename.com/city/price 

문제는이 파라미터를 혼란이다. 는 그래서 아래의 코드로 해결하려하지만 충분하지 않습니다 :

'urlManager' => array(
     'urlFormat' => 'path', 
     'appendParams' => true, 
     'showScriptName' => false, 
     'useStrictParsing' => FALSE, 
     'rules' => array(
      '<country:\w+>/<city:\w+>/<travelling_type:\w+>/<accommodation:\w+>/<caftering:\w+>/<price_from:\d+/<price_to:\d+>' => 'Travels/list' 
     ), 
    ), 
+0

접근법의 문제점은 매개 변수가 위치에 의해서만 결정된다는 것이므로 어떤 매개 변수가 실제로 무엇인지 판단 할 수 없습니다. 대신 명명 된 매개 변수를 사용할 수 있습니다. –

+0

어떻게 해결할 수 있습니까? – sodey

답변

2

그것하지 않는 정말 쉽게 그 YII 그 두 개의 URL의 차이점을 알고하지 않기 때문에 :

mysitename.com/{city}/{price} 
mysitename.com/{city}/{accommodation} 

'<param1:\w+>/<param2:\w+>/<param3:\w+>/<param4:\w+>/<param5:\w+>/<param6:\d+/<param7:\d+>' => 'Travels/list' 

귀하의 작업은 검색 쿼리에 대한 어떤 매개 변수를 나타내는 쿼리 매개 변수를 식별해야합니다 :

은 당신이 생각 할 수있는 것은이 시스템에 경로를 변경합니다. 시스템의 일부 인스턴스에서는이 작업이 충분히 쉬워야합니다. 예를 들어, 국가의 제한된 수의 여행 유형의 제한된 수의 "PARAM1"를 조회 할

mysitename.com/{city}/{accommodation} 

시스템의 경우 등

, 거기에 아마, 거기 (= 도시)를 국가, 도시, 여행 유형, 숙박 유형 및 요식 유형 목록과 대조하여 param1이 실제로 도시인지 확인합니다. 그런 다음 param2를 진행하여 숙박 시설을 정의하는지 확인합니다.

가격이 서로 다른 데이터 유형 (여행용 검색 엔진 정수의 경우)으로 가격을 쉽게 식별 할 수 있으므로 가격이 정수인지 여부 만 확인하면 쉽게 가격을 식별 할 수 있습니다. price_from과 price_to를 구분하려면 가격이 하나뿐이라면 price_from이라고 가정하십시오. 두 가지 가격이있는 경우 첫 번째 가격은 price_from이고 두 번째 가격은 price_to입니다. price_to 만 설정하려면 price_from을 0으로 설정하십시오.

원하는 것을 포함하길 바랍니다. 설정하는 것은 매우 복잡 할 수 있지만 그와 같은 URL 경로에 대해 지불해야하는 가격입니다. :)