2013-08-15 3 views
0

내가 만든 사용자 지정 구성 요소에 대한 라우팅을 추가하려고하는데이 작업을 수행하는 방법에 대한 문서를 따랐습니다. 그러나 router.php 파일을 구성 요소에 업로드하면 사이트가 비어있게되었습니다. 내가 무엇이든 놓치고 있는지 확실하지 않습니다. 마치 전체 사이트가이 새 파일 만 참조하는 것처럼 비어있는 페이지를 제공합니다.joomla 구성 요소 breaks 사이트에 router.php 추가

에 SEF URL을 구성 요소의 URL은 다음과 같습니다

index.php/en/products/trousers 
index.php/en/products/555-123-20 

구성 요소 \의 router.php

:

index.php/en/products 

내가 라우터를 구축하는 방식은 링크가 다음과 같이하는 것입니다

function componentBuildRoute(&$query) 
{ 
    $segments = array(); 

    if(isset($query['view'])) { 
     $segments[] = $query['view']; 
     unset($query['view']); 
    } 
    if(isset($query['cat'])) { 
     $segments[] = $query['cat']; 
     unset($query['cat']); 
    } 
    if(isset($query['itemid'])) { 
     $segments[] = $query['itemid']; 
     unset($query['itemid']); 
    } 
    if(isset($query['color'])) { 
     $segments[] = $query['color']; 
     unset($query['color']); 
    } 

    return $segments; 
} 

function componentParseRoute($segments) { 
    $vars = array(); 
    switch($segments[0]) 
    { 
     case 'listing': 
       $vars['view'] = $this->chooseView($segments[1]); 
       break; 
     case 'item': 
       $vars['id'] = $segments[1].'-'.$segments[2]; 
       break; 
    } 
    return $vars; 
} 

private function chooseView($cat) { 
    switch($cat) { 
     case '1': 
      $cat = 'trousers'; 
      break; 
     case '2': 
      $cat = 'jackets'; 
      break; 
    } 
    return $cat; 
} 
+0

왜 non-method 함수에'private' 키워드를 사용하고 있습니까? – MasterAM

+0

"비 메소드 기능"이란 무엇입니까? 이 함수는'componentParseRoute' 내에서 사용됩니다. – ehz350

+0

정확하게 클래스 메소드가 아닙니다. 해당 키워드를 제거하여 시작하십시오. 개발 중에 PHP 오류가 발생하면 PHP 오류가 발생하지 않습니다. 다음으로 구성 요소의 이름은 무엇입니까? 함수의 접두사는'function ParseRoute ($ segments) {'등. – MasterAM

답변

0

@ MasterAM은 private에 대해 정확합니다.

다소 관련있는 메모에서 router.php은 함수 외부에있는 변수를 좋아하지 않습니다. 전역 배열을 추가하려고했지만 액세스 할 수 없었습니다. 대신 배열을 반환하는 함수를 만들었습니다.