我目前正在使用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>
答案 0 :(得分:1)
首先,你需要渲染{$ FieldHolder}而不是{$ Field},因为持有者模板包含$ Message,它将显示验证消息。 (不渲染这可能会让你想知道为什么表格不能工作数小时)
其次,你是吗?在添加模板后flush = all?我想不出为什么这不起作用的另一个原因。