【问题标题】:SilverStripe - Multilingual Custom Form TemplateSilverStripe - 多语言自定义表单模板
【发布时间】: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


【解决方案1】:

从您的示例中,我看不到您的变量所在的位置,以及您计划如何使用它们,但要创建多语言表单,您最好使用 _t() 功能:https://docs.silverstripe.org/en/3.1/developer_guides/i18n/#translating-text

您可以将它用于任何“硬编码”文本,无论是在 php 中还是在您的模板中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多