Я пытаюсь добавить HeaderField :: для визуального разделения полей формы выставления счета и доставки, созданных в SilverShop-Core.
Я попытался добавить поле заголовка в файл Checkout.php, а также в каждый из файлов ShippingAddress.php и BillingAddress.php. Самое близкое, что мне удалось получить, это добавить его в файл Address.php (находится в папке Model). Но мне нужна помощь в написании кода, чтобы указать, что если поля формы предназначены для выставления счетов, то в поле заголовка должен быть указан адрес выставления счета. Тот же процесс для доставки. Я подозреваю, что мне нужно заявление If Else, но я не знаю, где и как это написать.
Я добавил поле HeaderField в функцию beforeUpdateCMSFields, а также getFrontEndFields.
...
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;
}
...
На странице оформления заказа я хотел бы видеть заголовок, указывающий, что некоторые поля формы предназначены для выставления счетов, а другие поля формы - для доставки.