Php 是否有方法将HeaderField添加到silvershop Core中的Shipping和Billing form字段

Php 是否有方法将HeaderField添加到silvershop Core中的Shipping和Billing form字段,php,silverstripe,Php,Silverstripe,我试图添加一个HeaderField::以直观地拆分SilverShop Core中生成的账单和发货表单字段 我已经尝试在Checkout.php文件以及ShippingAddress.php和BillingAddress.php文件中添加Headerfield。到目前为止,我最接近的方法是将其添加到Address.php文件(位于Model文件夹中)。但是我需要一些帮助来编写代码来指定,如果表单字段用于计费,那么标题字段应该显示计费地址。发货的过程也一样。我想我需要一个If-Else语句,但我

我试图添加一个HeaderField::以直观地拆分SilverShop Core中生成的账单和发货表单字段

我已经尝试在Checkout.php文件以及ShippingAddress.php和BillingAddress.php文件中添加Headerfield。到目前为止,我最接近的方法是将其添加到Address.php文件(位于Model文件夹中)。但是我需要一些帮助来编写代码来指定,如果表单字段用于计费,那么标题字段应该显示计费地址。发货的过程也一样。我想我需要一个If-Else语句,但我不知道在哪里或如何写

我在函数beforeUpdateCMSFields和getFrontEndFields中添加了一个字段HeaderField


在签出页面上,我希望看到一个标题,标识某些表单字段用于计费,其他表单字段用于发货。

我已设法将HeaderField添加到位于“签出->组件”文件夹下的CustomerDetails文件中。我试图添加一个用于计费的headerfield,但它没有显示,也没有错误消息。有没有关于添加headerfield的建议?类BillingAddress扩展地址{private static$table_name='SilverShop_BillingAddress';公共函数getFrontEndFields(){$fields=new FieldList(HeaderFields::create('Header','Billing Address')->addExtraClass('BubblesFormSections');返回$fields;}我还成功地将headerfield添加到成员身份文件中。对帐单地址进行了一些更改,并设法使headerfield显示,但没有丢失关联的帐单表单字段。公共函数getFormFields($fields){$fields=FieldList::create(headerfield::create('Header','Billing Address'))->addExtraClass('BubblesFormSections');返回$fields;}我已设法将HeaderField添加到位于“签出->组件”下的CustomerDetails文件中文件夹。我试图添加用于计费的headerfield,但它没有显示,也没有错误消息。是否建议添加headerfield?class BillingAddress扩展地址{private static$table_name='SilverShop_BillingAddress';公共函数getFrontEndFields(){$fields=new FieldList(HeaderField::create('Header','Billing address')->addExtraClass('BubblesFormSections');返回$fields;}我还成功地将headerfield添加到成员身份文件中。对帐单地址进行了一些更改,并设法使headerfield显示,但没有丢失关联的帐单表单字段。公共函数getFormFields($fields){$fields=FieldList::create(headerfield::create('Header','Billing Address'))->addExtraClass('BubblesFormSections');返回$fields;}
class Address extends DataObject 
{
public function getCMSFields()
{
    $self = $this;

    $this->beforeUpdateCMSFields(
        function (FieldList $fields) use ($self) {
            $fields->addFieldToTab(
                'Root.Main',
                $self->getCountryField(),
                'State'
            );
            $fields->addFieldToTab(
                'Root.Main',
                $self->HeaderField(),
                'Address'
            );


            $fields->removeByName('MemberID');
        }
    );

    return parent::getCMSFields();
}

public function getFrontEndFields($params = null)
{
    $fields = new FieldList(
        HeaderField::create('Header', $this->fieldLabel('Address'))->addExtraClass('BubblesFormSections'),
        $this->getCountryField(),
        $addressfield = TextField::create('Address', $this->fieldLabel('Address')),
        $address2field =
            TextField::create('AddressLine2', $this->fieldLabel('AddressLine2')),
        $cityfield = TextField::create('City', $this->fieldLabel('City')),
        $statefield = TextField::create('State', $this->fieldLabel('State')),
        $postcodefield = TextField::create('PostalCode', $this->fieldLabel('PostalCode')),
        $phonefield = TextField::create('Phone', $this->fieldLabel('Phone'))
    );
    if (!empty($params['addfielddescriptions'])) {
        $addressfield->setDescription(
            _t(__CLASS__ . '.AddressHint', 'street / thoroughfare number, name, and type or P.O. Box')
        );
        $address2field->setDescription(
            _t(__CLASS__ . '.AddressLine2Hint', 'premises, building, apartment, unit, floor')
        );
        $cityfield->setDescription(_t(__CLASS__ . '.CityHint', 'or suburb, county, district'));
        $statefield->setDescription(_t(__CLASS__ . '.StateHint', 'or province, territory, island'));
    }

    $this->extend('updateFormFields', $fields);
    return $fields;
}