如何将每个表单字段列表(如contactdetails表单),billingaddress表单呈现为Silvershop多步结算中的自定义模板

时间:2016-11-30 23:54:07

标签: php silverstripe silvershop

我目前正在使用Silverstripe模块Silvershop(https://github.com/silvershop/silvershop-core)并使用Multi-Step“Stepped”Checkout自定义结帐流程。我的问题是如何渲染每个表单字段列表,如contactdetails表单,billingaddress从自定义模板,以便我可以更多地控制表单的样式。 我尝试按照silverstripe doc(https://docs.silverstripe.org/en/3.4/developer_guides/forms/form_templates/)来创建表单模板,但没有让它工作。自定义表单字段不会输出到前端。

site / mysite / code / CheckoutStep_ContactDetailsCustom.php中的一些代码

public function ContactDetailsForm()
{
    .....

    $form->setTemplate('CustomContactForm');
    $this->owner->extend('updateContactDetailsForm', $form);

    return $form;
}

site / themes / custom / templates / Includes / CustomContactForm.ss

中的一些代码
<form $AttributesHTML>
<fieldset>
    <% with Fields %>
        <% with FieldByName(FirstName) %>
            <div>
                {$Field}
            </div>
        <% end_with %>
        <% with FieldByName(Surname) %>
            <div>
                {$Field}
            </div>
        <% end_with %>
    <% end_with %>
</fieldset>
</form>

这是默认的表单布局: enter image description here

1 个答案:

答案 0 :(得分:1)

首先,你需要渲染{$ FieldHolder}而不是{$ Field},因为持有者模板包含$ Message,它将显示验证消息。 (不渲染这可能会让你想知道为什么表格不能工作数小时)

其次,你是吗?在添加模板后flush = all?我想不出为什么这不起作用的另一个原因。