2012-11-13 1 views
2

Silverstripe Framework/CMS를 처음 사용합니다. 나는 컨트롤러로 ./mysite/code/Page.php을보고 템플릿 디렉토리로 ./themes/simple/...을 참조하십시오. 관리자 패널에 로그인하여 새로운 test 페이지를 추가했습니다. URL이 http://example.com/test 인 웹 사이트에 메뉴가 나타나고 내용이 표시됩니다.실버 스트라이프 URL은 어떻게 작동합니까?

그래서 내가 알고 싶은 것은 새로운 컨트롤러에 액세스하는 방법은 Download.ss입니다. 새 페이지 download을 관리자 패널에 추가하지 않고 URL http://example.com/download/123/에 액세스하고 싶습니다. 고맙습니다.

+0

에있다? 새 라우팅 규칙을 설정하는 기본 방법은 2.4.x와 3.0.x에서 다릅니다. – drzax

+0

SS 3.0x를 사용 중입니다. –

답변

5

먼저 .ss 확장자가있는 파일은 컨트롤러가 아닌 템플릿 파일입니다.

Controller을 확장하는 mysite/code/Download.php에 새 클래스를 만듭니다.

class Download extends Controller { 
    public function index() { 
     // Automatically handles URLs like http://example.com/Download 
    } 

    public function exampleaction() { 
     // Automatically handles URLs like http://example.com/Download/exampleaction 
    } 
} 

은 그 후에 당신은 당신의 새로운 컨트롤러의 index 기능 http://example.com/download/123에 통화를 처리하도록 지정하기 위해 mysite/_config 디렉토리에 새 routes.yml 파일을 추가 할 수 있습니다.

--- 
Name: downloadrules 
--- 
Director: 
    rules: 
    'download/$ID': Download 

은 이제 예를 들어, URL의 '123'부분은 index 함수 내 $this->request->param('ID')으로 액세스 할 수 있습니다. 이제

할 수있다 :이 물건에 대한

class Download extends Controller { 
    public function index() { 
     $fileID = $this->request->param('ID'); 
     // Do your thing. 
    } 
} 

문서는 사용중인 Silverstripe의 버전 http://doc.silverstripe.org/framework/en/reference/director

+0

Drzax, 고맙습니다. –

+0

테마 용으로'template/Download.ss' 파일을 만들었지 만 실행 중이 아닙니다 ... 무슨 문제입니까? –