我正在尝试将URL中的最后一个slug传递给我的控制器以用作过滤器的参数。不幸的是我一直都没有找到错误的页面。
示例网址:/ sectors / category / energy
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 :(得分:1)
您没有定义您提供的网址中的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'
无论哪种方式,您都应该更改两个文件中的一个以使其正常工作。