2016-09-27 4 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', 
); 

OR

でそれを定義することができますこのようにroutes.ymlに設定してください。

routes.yml

'sectors/category': 'BlogPostsPage_Controller' 

いずれかの方法で、あなたはそれを動作させるために、2つのファイルのいずれかを変更する必要があります。

関連する問題