【发布时间】:2015-06-08 20:40:32
【问题描述】:
我正在构建一个包含两种语言(英语和德语)的页面。为此,我使用 SilverStripe 页面 (http://addons.silverstripe.org/add-ons/silverstripe/translatable) 上提供的可翻译模块。在普通页面上,它就像一个魅力。
联系表单在控制器中创建。通过$form->setTemplate,我为表单加载了一个自定义模板,该模板位于模板的 include 子目录中。在类文件中,我定义了不同的 TextFields(模型部分),我想在表单模板中使用它们。
这里是控制器:
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 范围?
-
这里有同样的“问题”。您是否找到将页面类中定义的 db-fields 放入自定义表单模板的方法?
标签: forms templates include multilingual silverstripe