主页上的SilverStripe操作返回404

时间:2014-03-15 06:13:07

标签: silverstripe

我设置了一个常规操作的页面,但是当我将此页面用作主页(网址段为' home')时,操作(例如http:// {BaseHref} / someaction)返回404.如何让SilverStripe识别主页操作?

class MyPage_Controller extends Page_Controller {

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

    public function someaction() {
        die('never get here');
    }
}

1 个答案:

答案 0 :(得分:5)

在SilverStripe中,页面上的操作路由总是以相同的方式运行:

$baseURL/$URLSegment/Action

这意味着,如果您执行/someaction,它将不会查找操作,而是会查找URLSegment为someaction的网页。

因此,如果您想在主页上调用操作,则必须包含URLSegment。

通常是/home/someaction 但是,我强烈建议使用$Link方法。

$Link('someaction') // will output /home/someaction
// alternatively you can also do $Link/someaction

还要注意:

  • 私有静态变量(如$allowed_actions)被缓存,您必须刷新(访问/?flush=1)才能让SilverStripe重新加载该缓存。
  • $BaseHref已弃用,请改用$baseURL$absoluteBaseURL