Silverstripe 3.4 - 路由返回页面未找到

时间:2016-09-27 13:52:32

标签: controller routing silverstripe

我正在尝试将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是能量,但就其而言是这样。

我错过了什么吗?

由于

1 个答案:

答案 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'

无论哪种方式,您都应该更改两个文件中的一个以使其正常工作。