螺栓 CMS 事件

Bolt CMS Events

我正在处理保存事件,但运气有限。

我目前尝试了两种方法,但效果有限。

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);
}

所需的参数是一个 php 回调,其格式如下所示:

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

该语法是对 运行 当前 class 中的 postSave 方法说的。所以这适用于您的示例编号 1。

现在您可以在 postSave 方法中转储事件并查看结果。

希望我的回答不会来得太晚! 您只需修改内容并将其保存回数据库即可:

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")