2016-09-27 2 views
2

URL의 마지막 슬러그를 내 컨트롤러로 전달하여 필터의 매개 변수로 사용하려고합니다. 불행히도 나는 항상 페이지 오류를 찾을 수 없습니다.Silverstripe 3.4 - 라우팅 페이지를 찾을 수 없습니다.

예 URL :/분야/부문/에너지

Routes.yml :

--- 
Name: mysiteroutes 
After: framework/routes#coreroutes 
--- 
Director: 
    rules: 
    'sectors': 'BlogPostsPage_Controller' 

내 컨트롤러 : 디버그를 수행

class BlogPostsPage_Controller extends Page_Controller { 

private static $url_handlers = array(
    '$ID' => 'News', 
); 

private static $allowed_actions = array('News'); 

public function News(SS_HTTPRequest $request) 
{ 
    $news = BlogPost::get() 
     ->filter(array(
     'Categories.URLSegment' => '', 
     'Tags.Title' => 'News' 
     )) 
     ; 
    return $this->render(); 
    } 
} 

는 ID 에너지는하지만 그건 지금까지의 것을 보여줍니다 그것은 얻는다.

내가 놓친 것이 있습니까?

감사

+0

'플러시'했습니까? 또한 https://github.com/NightJar/ssrigging-slug는이 기능에 사용할 수있는 멋진 모듈입니다. – wmk

+0

'framework/routes # coreroutes'가 필요하다고 생각하지 않습니다.'# coreroutes'가 필요합니다. – zanderwar

답변

1

당신은 당신이주는 URL에있는 Category 부분을 정의하지 않습니다. SilverStripe는 이제 찾을 수없는 Category/Energy으로 맞는 경로를 찾고 있습니다. 아직 정의되지 않았기 때문입니다.

그래서 Category 변수 인 경우처럼 $url_handlers에서 그것을 정의 할 수 있습니다이

BlogPostsPage_Controller는

private static $url_handlers = array(
    '$Category/$ID' => 'News', 
); 

또는

이 변수가없는 경우 당신은 할 수 routes.yml에 다음과 같이 설정하십시오.

routes.yml

'sectors/category': 'BlogPostsPage_Controller' 

어느 쪽이든, 당신은 그것을 작동하게하기 위해 두 파일 중 하나를 변경해야합니다.