2015-07-13 295 views
0

我正在與保存事件,但運氣有限。螺栓CMS事件

我目前已經嘗試了兩種方法,但成功有限。

1)我可以永遠無法得到的功能火,

2)我也不太知道該怎麼傳遞到函數法兩種。

所有我試圖做的是轉儲事件信息進行內容save.Any幫助非常感謝,真的愛這個CMS

嘗試一 - 從來沒有運行在所有

功能
class Extension extends BaseExtension 
{ 


public function initialize() { 
    $this->addCss('assets/extension.css'); 
    $this->addJavascript('assets/start.js', true); 

    $this->app['dispatcher']->addListener(\Bolt\Events\StorageEvents::POST_SAVE, 'postSave'); 

} 

function postSave(\Bolt\StorageEvent $event) 
{ 
    dump($event); 
} 

嘗試二 - 我作爲參數輸入什麼?

class Extension extends BaseExtension 
{ 


public function initialize() { 
    $this->addCss('assets/extension.css'); 
    $this->addJavascript('assets/start.js', true); 

    $this->app['dispatcher']->addListener(\Bolt\Events\StorageEvents::POST_SAVE,$this->postsave($this->?????)); 

} 

function postSave(\Bolt\StorageEvent $event) 
{ 
    dump($event); 
} 

回答

1

所需的參數是一個PHP回調這個格式是這樣的:

$this->app['dispatcher']->addListener(\Bolt\Events\StorageEvents::POST_SAVE, array($this, 'postSave')); 

這句法是說跑當前類中的方法postSave。因此,這將適用於您的示例編號1.

現在您可以在postSave方法中轉儲事件並查看結果。

+0

謝謝您的時間羅斯,也給其他人掙扎,重新保存時或更新內容鍵入保存請求是AJAX之一,即使你有東西回聲,他們可能不會顯示,但代碼仍在運行 – jmack

2

希望我的回答不會太遲! 你根本就修改內容,並保存回數據庫:

public function postSave(\Bolt\Events\StorageEvent $event) { 
    // get the content 
    $content = $event->getContent(); 
    // get a field out of the contenttype 
    $data = $content->get("myField"); 
    // now modify $data here 
    $data = "new data - what ever you want"; 
    // set data to the content 
    $content->setValue("data", $data); 
    // write the modified content to the database 
    $this->app['storage']->saveContent($content); 
} 

注意,功能得到射擊每次保存內容的時間。所以,只需要加一個if語句像這樣只需要修改的內容,你真的想:

if ($event->getContentType() == "my_type")