burnbright / silverstripe-hasonefield
Edit a has_one relationship using a GridField, triggered by clicking a button.
Package info
github.com/silvershop/silverstripe-hasonefield
Type:silverstripe-vendormodule
pkg:composer/burnbright/silverstripe-hasonefield
5.0.0
2025-07-16 19:24 UTC
Requires
- php: ^8.3
- silverstripe/framework: ^6
- silverstripe/vendor-plugin: ^3
Requires (Dev)
- phpunit/phpunit: ^11.5
Replaces
README
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.
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 );