螺栓 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")
我正在处理保存事件,但运气有限。
我目前尝试了两种方法,但效果有限。
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")