主页上的SilverStripe操作返回404

Dav*_*veO 1 silverstripe

我有一个像往常一样设置动作的页面,但是当我使用这个页面作为主页(url段是'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');
    }
}
Run Code Online (Sandbox Code Playgroud)

Zau*_*sch 5

在SilverStripe中,页面上的操作路由始终以相同的方式工作:

$baseURL/$URLSegment/Action
Run Code Online (Sandbox Code Playgroud)

这意味着如果你这样做/someaction将不会寻找一个动作,而是寻找一个URLSegment为的Page someaction.

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

/home/someaction 但通常情况下,我强烈建议使用该$Link方法.

$Link('someaction') // will output /home/someaction
// alternatively you can also do $Link/someaction
Run Code Online (Sandbox Code Playgroud)

还要注意:

  • $allowed_actions缓存这样的私有静态变量,你必须刷新(访问/?flush=1)才能让SilverStripe重新加载该缓存.
  • $BaseHref不推荐使用,请使用$baseURL$absoluteBaseURL代替.