问题描述
银条 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();
}
}