2014-06-10 3 views
1

Yii Framework를 사용하여 웹 응용 프로그램을 개발 중이며 URL 재 작성에 약간의 문제가 있습니다.Yii URL 관리 문제

문제는 아래 코드의 마지막 규칙에 있습니다. 차량 : 그것은 카테고리 이름이 같은 하나의 단어 때 그것은 잘 작동 localhost/app/category/some-friendly-url-category-namelocalhost/app/category/view/id/some-friendly-url-category-name

에 (이 부분은 브라우저에 나타납니다)으로 변경하기로했다. 그러나이 같은 단어보다 이상이있는 경우는 작동하지 않습니다 어린이-물건

'urlManager'=>array(
     'showScriptName' => false, 
     'urlFormat'=>'path', 
     'rules'=>array(
      '<controller:\w+>/<id:\d+>' => '<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

      'category/<id:[A-Za-z0-9_\-]+>' => 'category/view', 
     ), 
    ), 

사람이 하나 좀 도와 줄래?

+0

두 개 이상의 단어에서 실제로 어떤 오류가 발생합니다. –

+0

그냥 그 행동을 찾을 수 있습니다. 그러나 Samuel Liew가 말했듯이, 그것은 규칙의 유일한 위치에 불과했습니다. 특정 규칙은 일반 규칙보다 커야합니다. –

답변

2

당신은 ID에 하이픈을 탈출 할 필요가 없습니다 :

'category/<id:[A-Z a-z 0-9 _ -]+>' => 'category/view', 

간단한 해결책은 다음과 같습니다

'category/<id>' => 'category/view', 
또한

, 당신이 배치 할 필요가 있습니다 않습니다 일반 (기본) 규칙 위의 특정 규칙.

<controller> 위의 범주 규칙을 이동하십시오. 그렇지 않으면 앱이 예를 들어 CategoryController에 actionChildrenStuff()을 찾으려고 시도합니다.

보통 세 가지 일반적인 규칙보다 새로운 규칙을 추가합니다.

+0

이들 중 아무 것도 작동하지 않습니다 :(이상하게 생각합니다. 잘못된 설정 일 수 있다고 생각합니까? –

+1

일반적인 규칙 위에 특정 규칙을 추가해야한다는 사실을 잊어 버렸습니다. 해당 범주 규칙을 ''항목 위로 이동하십시오. –

+0

오, 기분이 좋습니다. 너무 바보 같아! 그게 다야! 고마워! –