Php SilverStripe通过init()设置控制器$url\u处理程序
是否可以通过Php SilverStripe通过init()设置控制器$url\u处理程序,php,silverstripe,Php,Silverstripe,是否可以通过init()函数设置(ContentController的)$url\u处理程序,如下所示 public function init() { parent::init(); $this::$url_handlers = array( '' => 'index', '$Project' => 'getProject' ); } 我之所以这样问,是因为没有调用函数,而是得到了404,而当以传统方式对$url\u处理程
init()
函数设置(ContentController的)$url\u处理程序
,如下所示
public function init() {
parent::init();
$this::$url_handlers = array(
'' => 'index',
'$Project' => 'getProject'
);
}
我之所以这样问,是因为没有调用函数,而是得到了404,而当以传统方式对$url\u处理程序进行“硬编码”时,
私有静态$url\u处理程序=…
代码工作正常,函数被调用。在SilverStripe术语中,$url\u处理程序
属性实际上是一个简单的属性。这意味着在刷新缓存清单时,将重新生成并缓存配置
您可以从init
更新它,但需要使用,因为在调用init
方法时,配置清单已经被解析。因此,修改self::$url\u handlers
属性不会产生任何效果
下面是一个例子:
public function init()
{
parent::init();
Config::inst()->update(
__CLASS__,
'url_handlers',
array(
'' => 'index',
'$Project' => 'getProject'
)
);
}
作为参考,其中
RequestHandler::findAction
查看定义的$url\u handlers
值的配置清单。属性$url\u handlers
实际上是一个银条术语。这意味着在刷新缓存清单时,将重新生成并缓存配置
您可以从init
更新它,但需要使用,因为在调用init
方法时,配置清单已经被解析。因此,修改self::$url\u handlers
属性不会产生任何效果
下面是一个例子:
public function init()
{
parent::init();
Config::inst()->update(
__CLASS__,
'url_handlers',
array(
'' => 'index',
'$Project' => 'getProject'
)
);
}
作为参考,其中RequestHandler::findAction
查看定义的$url\u handlers
值的配置清单