2015-07-13 251 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")