Есть ли способ добавить HeaderField в поля формы Доставка и оплата в Silvershop-Core - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь добавить 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;
}

...

На странице оформления заказа я хотел бы видеть заголовок, указывающий, что некоторые поля формы предназначены для выставления счетов, а другие поля формы - для доставки.

...