我一直在努力扩展以向CMS添加一些功能。由于它是CMS的设置,我已将其添加到设置选项卡中。虽然我可以获取值并保存它们,但我需要在页面上执行一个操作来同步系统,我无法调用我的操作,这是我的代码。
var appDelegate: AppDelegate!
appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
player = VLCMediaPlayer()
player.media = VLCMedia(URL: NSURL(string: "http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"))
player.play()
player.drawable = appDelegate.window // or self.view if this code is in a UIViewController
它没有被调用。如果我需要将功能添加到左侧导航而不是部分设置,我也可以使用,但我也尝试过,但成功率更低。是否可以按下按钮调用操作?
答案 0 :(得分:3)
您需要将$allowed_actions
和update
方法放在CMSSettingsController
的扩展名中。您也应该将FormAction
放入CMSActions列表中。
以下是我将如何做到这一点:
<强> SiteConfigExtension.php 强>
class SiteConfigExtension extends DataExtension
{
private static $db = array(
'Path' => 'Varchar(50)',
);
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldsToTab('Root.Importer', array(
ImporterPathField::create('Path', 'Path')->setDescription('Path to area')
));
}
public function updateCMSActions(FieldList $actions)
{
$actions->push(
FormAction::create('update', 'Synchronise')
);
}
}
<强> CMSSettingsControllerExtension.php 强>
class CMSSettingsControllerExtension extends DataExtension
{
private static $allowed_actions = array (
'update',
);
public function update() {
SS_Log::add_writer(new SS_LogEmailWriter('test@example.com'), SS_Log::ERR);
}
}