我设置了一个常规操作的页面,但是当我将此页面用作主页(网址段为' 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');
}
}
答案 0 :(得分:5)
$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
。