2016-04-01 14 views
2

私はCMSに機能を追加するために拡張機能を作成しようとしています。これはCMSの設定なので、設定タブに追加しました。私は値を取って保存することができますが、システムを同期させるためにページ上でアクションが必要でしたが、私のアクションを呼び出すことができませんでした。ここに私のコードがあります。設定ページにフォームアクションを追加する

private static $db = array(
    'Path' => 'Varchar(50)', 
); 

private static $allowed_actions = array (
    'update', 
); 

public function updateCMSFields(FieldList $fields) 
{ 
    $fields->addFieldsToTab('Root.Importer', array(
     ImporterPathField::create('Path', 'Path')->setDescription('Path to area'), 
     FormAction::create('update', 'Synchronise') 
    )); 
} 

public function update() { 
    SS_Log::add_writer(new SS_LogEmailWriter('[email protected]'), SS_Log::ERR); 

} 

これは呼び出されません。私が設定の一部ではなく左のナビゲーションに機能を追加する必要があるなら、私はそれについても大丈夫ですが、私はあまりうまくいってもそれを試しました。ボタンを押すと呼ばれるアクションを得ることは可能ですか?

答えて

3

$allowed_actionsupdateの方法を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('[email protected]'), SS_Log::ERR); 
    } 
} 
:ここ

は、私はこれを行うだろうかです

関連する問題