我正在用兩種語言(英語和德語)構建一個頁面。爲此,我使用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的一個形式。這工作完全正常,包括所有功能。
我的問題是,我無法訪問變量(如標題或提交按鈕文本),這些變量將文本保存在我的自定義模板中 - 只返回空白。我認爲它必須做一些事情,但我無法解決這個問題。
你能粘貼你的模板嗎?您是否在模板中嘗試了$ Top.MyVariable以獲得$ Top範圍? – wmk
這裏有同樣的「問題」。您是否找到了將頁面類中定義的db字段放入您的自定義表單模板的方法? –