NewsletterAddressPickerTrait
Newsletter subscriber picker — the reusable "many objects pick NewsletterAddress" pattern.
A presenter uses this trait + PickerHostTrait, returns newsletterAddressPicker()
from pickers() and creates the fields in a multiplier row (or directly in the form) through
addNewsletterAddressControls().
In Newsletter the picker is inside a Multiplier (addresses[N][addressId]), so every row has
its own picker instance; the label is held by the text control addressEmail (survives the AJAX
re-render). $this->newsletterAddressManager is injected by the presenter constructor.
Table of Contents
Methods
- addNewsletterAddressControls() : void
- Creates the picker fields (hidden `addressId` + text label `addressEmail`) in the given container — a multiplier row or the form itself.
- newsletterAddressPicker() : PickerConfig
- Picker configuration for {@see \App\UI\Admin\System\Presenters\Traits\Pickers\PickerHostTrait::pickers()}.
- resolveNewsletterAddressLabel() : string|null
- Label for prefilling on edit (from the hidden value).
- suggestNewsletterAddresses() : array<int, array{id: int, label: string}>
Methods
addNewsletterAddressControls()
Creates the picker fields (hidden `addressId` + text label `addressEmail`) in the given container — a multiplier row or the form itself.
protected
addNewsletterAddressControls(Container $parent[, string $targetField = 'addressId' ][, string $displayField = 'addressEmail' ]) : void
Parameters
- $parent : Container
- $targetField : string = 'addressId'
- $displayField : string = 'addressEmail'
newsletterAddressPicker()
Picker configuration for {@see \App\UI\Admin\System\Presenters\Traits\Pickers\PickerHostTrait::pickers()}.
protected
newsletterAddressPicker([string $formName = 'editForm' ][, string|null $container = 'addresses' ][, string $targetField = 'addressId' ][, string $displayField = 'addressEmail' ]) : PickerConfig
Parameters
- $formName : string = 'editForm'
-
form name (
editForm) - $container : string|null = 'addresses'
-
multiplier container name (
addresses); null = top-level field - $targetField : string = 'addressId'
- $displayField : string = 'addressEmail'
Return values
PickerConfigresolveNewsletterAddressLabel()
Label for prefilling on edit (from the hidden value).
private
resolveNewsletterAddressLabel(int $id) : string|null
Parameters
- $id : int
Return values
string|nullsuggestNewsletterAddresses()
private
suggestNewsletterAddresses(string $query) : array<int, array{id: int, label: string}>
Parameters
- $query : string