2016-04-01 15 views
2

CMS'ye bazı işlevler eklemek için bir uzantı oluşturmaya çalışıyorum. CMS için bir ayar olduğundan ayarları sekmesine ekledim. Değerler alıp onları kaydedebilmem için, bir sistemi senkronize etmek için sayfada bir eyleme ihtiyacım vardı ve hareketimin çağrılması için gerekenleri alamıyorum, işte benim kodum.Bir yapılandırma sayfasına form eylemi ekleme

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

} 

Bu çağrılmadı. Fonksiyonu, ayarların bir parçası yerine sol nav'a eklemem gerekiyorsa, ben de bununla tamamım ama aynı zamanda daha az başarı ile denedim. Tuşa basma eylemi almak mümkün mü?

cevap

3

CMSSettingsController için bir uzantıya $allowed_actions ve update yöntemini yerleştirmeniz gerekir. Ayrıca muhtemelen FormAction'u CMSActions listesine koymalısınız.

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

SiteConfigExtension.php: Burada

Bunu yapacağını nasıl