2015-06-08 52 views
1

我正在用兩種語言(英語和德語)構建一個頁面。爲此,我使用SilverStripe頁面上提供的可翻譯模塊(http://addons.silverstripe.org/add-ons/silverstripe/translatable)。在常規頁面上,它就像一個魅力一樣。SilverStripe - 多語言自定義表單模板

在控制器中創建聯繫表單。通過$form->setTemplate我加載了一個窗體的自定義模板,它位於模板的include子目錄中。在類文件中,我定義了我想在表單模板中使用的不同TextField(模型部分)。

這裏是控制器:

class MietenPage extends Page { 

    private static $db = array (
     //Form 
     'ChoosPakage' => 'Varchar', 
     'FormEventHeadline' => 'Varchar', 
     'FormNoteHeadline' => 'Varchar', 
     'FormContactHeadline' => 'Varchar', 
     'FormAdditionalHeadline' => 'Varchar', 
     'FormCheckOverlay' => 'Varchar', 
     'FormCheckCaseDesign' => 'Varchar', 
     'FormCheckAGB' => 'Varchar', 
     'FormSubmit' => 'Varchar', 
     'AGBAlert' => 'Varchar' 
    ); 

    public function getCMSFields() { 
     $fields = parent::getCMSFields(); 

     //... 

     return $fields; 
    } 
} 

class MietenPage_Controller extends Page_Controller { 

    private static $allowed_actions = array('ContactForm'); 

    public function ContactForm() { 
     $fields = new FieldList( 
      //... 
     ); 
     $actions = new FieldList( 
      new FormAction('submit', 'Anfrage Senden!') 
     ); 

     $form = new Form($this, 'ContactForm', $fields, $actions); 
     $form->setTemplate('ContactFormTemplate'); 

     return $form; 

    } 

    public function submit($data, $ContactForm) { 
     $email = new Email(); 

     //... 
    } 
} 

在我的模板,我呼籲使用$ ContactForm的一個形式。這工作完全正常,包括所有功能。

我的問題是,我無法訪問變量(如標題或提交按鈕文本),這些變量將文本保存在我的自定義模板中 - 只返回空白。我認爲它必須做一些事情,但我無法解決這個問題。

+0

你能粘貼你的模板嗎?您是否在模板中嘗試了$ Top.MyVariable以獲得$ Top範圍? – wmk

+0

這裏有同樣的「問題」。您是否找到了將頁面類中定義的db字段放入您的自定義表單模板的方法? –

回答