0

Silverstripe 4.7

I have extended SiteConfig and I want to display a success - message in onAfterWrite - function.

How can this be done?

class FaviconSiteConfig extends DataExtension 

{

//...........

    public function onAfterWrite(){
        parent::onAfterWrite();
 
        // THIS DOESNT WORK!! ::
        //Controller::curr()->getResponse()->addHeader('X-Status', rawurlencode('Favicons updated!!'));

    }

//...........
    
    

}

Sepp Hofer
  • 217
  • 2
  • 12

1 Answers1

0

the only way i found was:

SilverStripe\Core\Injector\Injector:
  SilverStripe\SiteConfig\SiteConfigLeftAndMain:
    class: FaviconSiteConfigLeftAndMain

and:

<?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();
    }
        
}
Sepp Hofer
  • 217
  • 2
  • 12