如何在 Silvershop 多步结帐中将每个表单字段列表(如联系人详细信息表单、账单地址表单)呈现为自定义模板
how to render each form fieldlist like contactdetails form, billingaddress form to a custom template in Silvershop multi-step checkout
我目前正在使用 Silverstripe 模块 Silvershop (https://github.com/silvershop/silvershop-core) 并使用多步 "Stepped" 结帐自定义结帐流程。我的问题是如何将每个表单字段列表(如 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>
这是默认的表单布局:
首先,您需要呈现 {$FieldHolder} 而不是 {$Field},因为 holder 模板包含 $Message,它将显示验证消息。
(不渲染这会让你想知道为什么一个表格几个小时都不能工作)
其次,添加模板后是否?flush=all?我想不出这行不通的另一个原因。
我目前正在使用 Silverstripe 模块 Silvershop (https://github.com/silvershop/silvershop-core) 并使用多步 "Stepped" 结帐自定义结帐流程。我的问题是如何将每个表单字段列表(如 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>
这是默认的表单布局:
首先,您需要呈现 {$FieldHolder} 而不是 {$Field},因为 holder 模板包含 $Message,它将显示验证消息。 (不渲染这会让你想知道为什么一个表格几个小时都不能工作)
其次,添加模板后是否?flush=all?我想不出这行不通的另一个原因。