如何解决Silverstripe 4.7 自定义 SiteConfig onAfterWrite 成功消息
银条 4.7
我扩展了 SiteConfig,我想在 onAfterWrite 函数中显示成功消息。
如何做到这一点?
class FaviconSiteConfig extends DataExtension
{
//...........
public function onAfterWrite(){
parent::onAfterWrite();
// THIS DOESNT WORK!! ::
//Controller::curr()->getResponse()->addHeader('X-Status',rawurlencode('Favicons updated!!'));
}
//...........
}
解决方法
我发现的唯一方法是:
SilverStripe\Core\Injector\Injector:
SilverStripe\SiteConfig\SiteConfigLeftAndMain:
class: FaviconSiteConfigLeftAndMain
和:
<?php
use SilverStripe\SiteConfig\SiteConfig;
use SilverStripe\SiteConfig\SiteConfigLeftAndMain;
use SilverStripe\ORM\DataObject;
use SilverStripe\Dev\Debug;
use SilverStripe\Dev\Backtrace;
class FaviconSiteConfigLeftAndMain extends SiteConfigLeftAndMain
{
public function save_siteconfig($data,$form)
{
$data = $form->getData();
$siteConfig = DataObject::get_by_id(SiteConfig::class,$data['ID']);
$form->saveInto($siteConfig);
$siteConfig->write();
if ($siteConfig->hasExtension(RecursivePublishable::class)) {
$siteConfig->publishRecursive();
}
if($data['DoRefreshFavicon'] == 1){
//Debug::show($data);
$response = 'Favicon was updated successfully! You might empty your browser-cache to take effect!';
}else{
$response = _t('SilverStripe\\Admin\\LeftAndMain.SAVEDUP','Saved.');
}
$this->response->addHeader(
'X-Status',rawurlencode($response)
);
return $form->forTemplate();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。