silvershop/silverstripe-hasonefield

Edit a has_one relationship using a GridField, triggered by clicking a button.

Installs: 367 873

Dependents: 30

Suggesters: 1

Security: 0

Stars: 34

Watchers: 7

Forks: 30

Open Issues: 3

Type:silverstripe-vendormodule

4.0.1 2023-08-30 04:02 UTC

README

Build Status Latest Stable Version Latest Unstable Version

Allows you to create a CMS button for creating and editing a single related object. It is actually a grid field, but just looks like a button.

demo

Installation

composer require silvershop/silverstripe-hasonefield

Usage

    use SilverShop\HasOneField\HasOneButtonField;

    private static $has_one = [
        'Address' => 'Address'
    ];

    public function getCMSFields() {
        $fields = parent::getCMSFields();

        $fields->addFieldToTab("Root.Main",
            HasOneButtonField::create($this, "Address")
        );

        return $fields;
    }

You must pass through the parent context ($this), so that the has_one relationship can be set by the GridFieldDetailForm.

Filtering Results

To filter the results shown in the picker use HasOneAddExistingAutoCompleter::setSearchList.

$property = HasOneButtonField::create(
    $this,
    'Address'
);

$property
    ->getConfig()
    ->getComponentByType(HasOneAddExistingAutoCompleter::class)
    ->setSearchList(Property::get()->filter("Country", "GB"));

$fields->addFieldToTab(
    'Root.Main',
    $property
);