2012-12-02 4 views
0

나는 테이블라는 카테고리를 가지고 : YII - URL mamanement 최적화

  • CATEGORY_NAME
  • 을 PARENT_ID

    • ID와 테이블 제품 :

      • ID
      • 는 CATEGORY_ID
      • 제품 _

      가지 간단한 PRODUCT_NAME을 유지하고 catogory_name 고유 URL 별칭

      내가이 URL이

      숍/computer_parts/CPU/인텔처럼 만들하고자하는 -의 URL입니다 부모님의 컴퓨터와 컴퓨터를 가지고있는 "인텔"카테고리

      숍/computer_parts/CPU/인텔/intel_core_i5_2500k은 -

      public function geturl() { 
          *** getting aliases of category and parents *** 
          return Yii::app()->createUrl(...etc 
      } 
      

      는인가

      분류 모델

      public function geturl() { 
          ***in cycle getting aliases of all parents*** 
          return Yii::app()->createUrl(...etc 
      } 
      

      및 제품과 같은 모델의 메소드 추가, 내가 솔루션을 참조

      제품

      입니다 이 일을 더 간단하게하는 방법은?

    답변

    0

    첫째, (보호 /설정/main.php) 기본 설정에 잘못된 경로 및 showScriptName에 URL 형식을 설정

    'urlManager'=>array(
        'urlFormat'   => 'path', 
        'showScriptName' => false, 
        'rules'=>array( 
         ... 
    

    다음으로 설정 할 URL에 대한 규칙이 필요 귀하의 설정처럼 뭔가 :

    제품 /보기 및 제품/인덱스 두 URL을 지적
    shop/<parent:.+>/<child:.+>/<category:.+>/<product:.+> => 'product/view', 
    shop/<parent:.+>/<child:.+>/<category:.+>/    => 'product/index', 
    

    (분명히 이것은 당신이 이들 각각을 처리 할 수있는 어떤 컨트롤러/액션으로 변경됩니다). 당신은 지금, URL에서 모든 GET 변수에 액세스 할 수 있도록 예를 들어 :

    $product = $_GET['product']; 
    

    당신은 당신이 URL 구조에서 현재 어떤 수준 식별하고 그것을 처리하는 컨트롤러/액션을 작성해야합니다 따라서.

    +0

    아니요 아니요.이 제품에 대한 URL을 얻을 때 서버로드에 대해 알고 있습니다. –