SilverStripe - 多语言自定义表单模板

时间:2015-06-08 20:40:33

标签: forms templates include multilingual silverstripe

我正在构建一个包含两种语言(英语和德语)的页面。为此,我使用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调用表单。这完全没问题,包括所有功能。

我的问题是,我无法访问变量(如标题或提交按钮文本),这些变量将文本保存在我的自定义模板中 - 只返回空白。我认为它必须对范围做一些事情,但我无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

在您的示例中,我无法查看您的变量所在的位置以及您计划如何使用它们,但要创建多语言表单,您最好使用_t()功能:{{3} }

您可以将其用于任何'硬编码的'文本,在PHP和模板中。