ListController
Adds features for working with backend lists.
class Backend\Behaviors\ListController
extends Backend\Classes\ControllerBehavior
This behavior is implemented in the controller like so:
public $implement = [
\Backend\Behaviors\ListController::class,
];
public $listConfig = 'config_list.yaml';
The $listConfig
property makes reference to the list configuration
values as either a YAML file, located in the controller view directory,
or directly as a PHP array.
Extends
Class | Description |
---|---|
ControllerBehavior
|
Controller Behavior base class |
Traits
Trait | Description |
---|---|
AssetMaker
|
Asset Maker Trait Adds asset based methods to a class |
ConfigMaker
|
Config Maker Trait Adds configuration based methods to a class |
ExtensionTrait
|
Extension trait |
SessionMaker
|
Session Maker Trait |
ViewMaker
|
View Maker Trait Adds view based methods to a class |
WidgetMaker
|
Widget Maker Trait |
Properties
public
$listConfig
:
mixed
= "config_list.yaml"
Configuration for this behaviour
protected
$actions
:
array
= ["index"]
Visible actions in context of the controller
protected
$filterWidgets
:
\Backend\Classes\WidgetBase[]
= []
Reference to the filter widget objects.
protected $listDefinitions : array
List definitions, keys for alias and value for configuration.
protected
$listWidgets
:
\Backend\Classes\WidgetBase[]
= []
Reference to the list widget object.
protected $primaryDefinition : string
The primary list alias to use. Default: list
protected
$requiredConfig
:
array
= ["modelClass","list"]
Configuration values that must exist when applying the primary config file.
- modelClass: Class name for the model
- list: List column definitions
protected
$toolbarWidgets
:
\Backend\Classes\WidgetBase[]
= []
Reference to the toolbar widget objects.
inherited public $assetPath : string
Specifies a path to the asset directory.
inherited
public
static
$extendableStaticCalledClass
:
string
= null
The calling class when using a static method.
inherited public $layout : string
Layout to use for the view.
inherited
public
$suppressLayout
:
bool
= false
Prevents the use of a layout.
inherited
public
$vars
:
array
= []
A list of variables to pass to the page.
inherited
protected
$assets
:
array
= {"js":[],"css":[],"rss":[],"vite":[]}
Collection of assets to display in the layout.
inherited protected $config : array
Supplied configuration.
inherited protected $configPath : string
Specifies a path to the config directory.
inherited protected $controller : Backend\Classes\Controller
Reference to the back end controller.
inherited
protected
static
$extensionCallbacks
:
array
= []
Used to extend the constructor of an extension class. Eg:
BehaviorClass::extend(function($obj) { })
inherited
protected
$extensionHidden
:
mixed
= {"fields":[],"methods":["extensionIsHiddenField","extensionIsHiddenMethod"]}
inherited protected $layoutPath : string
Specifies a path to the layout directory.
inherited protected $orderFactor : integer
Ensures "first-come, first-served" applies to assets of the same ordering.
inherited
protected
$requiredProperties
:
array
= []
Properties that must exist in the controller using this behavior.
inherited protected $viewPath : string | array
Specifies a path to the views directory.
Methods
public __construct (Backend\Classes\Controller $controller)
Behavior constructor
Property | Type | Description |
---|---|---|
$controller | Backend\Classes\Controller |
public static extendListColumns (callable $callback) : void
Static helper for extending list columns.
Property | Type | Description |
---|---|---|
$callback | callable |
callable
|
public static extendListFilterScopes (callable $callback) : void
Static helper for extending filter scopes.
Property | Type | Description |
---|---|---|
$callback | callable |
callable
|
public index () : void
Index Controller action.
public index_onDelete () : void
Bulk delete records.
public listExtendColumns (Backend\Widgets\Lists $host) : void
Called after the list columns are defined.
Property | Type | Description |
---|---|---|
$host | Backend\Widgets\Lists |
The hosting list widget |
public listExtendColumnsBefore (Backend\Widgets\Lists $host) : void
Called before the list columns are defined.
Property | Type | Description |
---|---|---|
$host | Backend\Widgets\Lists |
The hosting list widget |
public
listExtendModel (Winter\Storm\Database\Model $model, string | null $definition = null
)
: Winter\Storm\Database\Model
Controller override: Extend supplied model
Property | Type | Description |
---|---|---|
$model | Winter\Storm\Database\Model | |
$definition | string | null |
string | null
|
public
listExtendQuery (Winter\Storm\Database\Builder $query, string | null $definition = null
)
Controller override: Extend the query used for populating the list after the default query is processed.
Property | Type | Description |
---|---|---|
$query | Winter\Storm\Database\Builder | |
$definition | string | null |
string | null
|
public
listExtendQueryBefore (Winter\Storm\Database\Builder $query, string | null $definition = null
)
Controller override: Extend the query used for populating the list before the default query is processed.
Property | Type | Description |
---|---|---|
$query | Winter\Storm\Database\Builder | |
$definition | string | null |
string | null
|
public
listExtendRecords (Illuminate\Contracts\Pagination\LengthAwarePaginator | Illuminate\Database\Eloquent\Collection $records, string | null $definition = null
)
Controller override: Extend the records used for populating the list after the query is processed.
Property | Type | Description |
---|---|---|
$records | Illuminate\Contracts\Pagination\LengthAwarePaginator | Illuminate\Database\Eloquent\Collection |
Illuminate\Contracts\Pagination\LengthAwarePaginator | Illuminate\Database\Eloquent\Collection
|
$definition | string | null |
string | null
|
public listFilterExtendQuery (Winter\Storm\Database\Builder $query, array $scope)
Controller override: Extend the query used for populating the filter options before the default query is processed.
Property | Type | Description |
---|---|---|
$query | Winter\Storm\Database\Builder | |
$scope | array |
array
|
public listFilterExtendScopes (Backend\Widgets\Filter $host) : void
Called after the filter scopes are defined.
Property | Type | Description |
---|---|---|
$host | Backend\Widgets\Filter |
The hosting filter widget |
public
listGetConfig ($definition = null
)
: stdClass
Returns the configuration used by this behavior.
Property | Type | Description |
---|---|---|
$definition | mixed |
mixed
|
public
listGetWidget ($definition = null
)
: Backend\Classes\WidgetBase
Returns the widget used by this behavior.
Property | Type | Description |
---|---|---|
$definition | mixed |
mixed
|
public
listInjectRowClass (Winter\Storm\Database\Model $record, string | null $definition = null
)
: string | void
Returns a CSS class name for a list row (
Property | Type | Description |
---|---|---|
$record | Winter\Storm\Database\Model |
The populated model used for the column |
$definition | string | null |
string | null
List definition (optional) |
CSS class name
public
listMakePartial (string $partial, array $params = []
)
: string
Controller accessor for making partials within this behavior.
Property | Type | Description |
---|---|---|
$partial | string |
string
|
$params | array |
array
|
Partial contents
public
listOverrideColumnValue (Winter\Storm\Database\Model $record, string $columnName, string | null $definition = null
)
: string | void
Replace a table column value (
Property | Type | Description |
---|---|---|
$record | Winter\Storm\Database\Model |
The populated model used for the column |
$columnName | string |
string
The column name to override |
$definition | string | null |
string | null
List definition (optional) |
HTML view
public
listOverrideHeaderValue (string $columnName, string | null $definition = null
)
: string | void
Replace the entire table header contents (
Property | Type | Description |
---|---|---|
$columnName | string |
string
The column name to override |
$definition | string | null |
string | null
List definition (optional) |
HTML view
public
listRefresh ($definition = null
)
: array
Refreshes the list container only, useful for returning in custom AJAX requests.
Property | Type | Description |
---|---|---|
$definition | mixed |
mixed
|
The list element selector as the key, and the list contents are the value.
public
listRender (string $definition = null
)
: string
Renders the widget collection.
Property | Type | Description |
---|---|---|
$definition | string |
string
Optional list definition. |
Rendered HTML for the list.
public
makeList ($definition = null
)
: Backend\Widgets\Lists
Prepare the widgets used by this action
Property | Type | Description |
---|---|---|
$definition | mixed |
mixed
|
public makeLists () : array
Creates all the list widgets based on the definitions.
inherited
public
addCss (string | array $name, array $attributes = []
)
: void
Adds StyleSheet asset to the asset list. Call $this->makeAssets() in a view to output corresponding markup.
Property | Type | Description |
---|---|---|
$name | string | array |
string | array
When an array of paths are provided they will be passed to the Asset Combiner |
$attributes | array |
array
When a string is provided it will be used as the 'build' attribute value |
inherited
public
addJs (string | array $name, array $attributes = []
)
: void
Adds JavaScript asset to the asset list. Call $this->makeAssets() in a view to output corresponding markup.
Property | Type | Description |
---|---|---|
$name | string | array |
string | array
When an array of paths are provided they will be passed to the Asset Combiner |
$attributes | array |
array
When a string is provided it will be used as the 'build' attribute value |
inherited
public
addRss (string $name, array $attributes = []
)
: void
Adds an RSS link asset to the asset list. Call $this->makeAssets() in a view to output corresponding markup.
Property | Type | Description |
---|---|---|
$name | string |
string
|
$attributes | array |
array
|
inherited public addViewPath (string | array $path) : void
Prepends a path on the available view path locations.
Property | Type | Description |
---|---|---|
$path | string | array |
string | array
|
inherited
public
addVite (array | string $entrypoints, ?string $package = null
)
: void
Adds Vite tags
Property | Type | Description |
---|---|---|
$entrypoints | array | string |
array | string
The list of entry points for Vite |
$package | ?string |
?string
The package name of the plugin or theme |
inherited
public
combineAssets (array $assets, string $localPath = ""
)
: string
Run the provided assets through the Asset Combiner
Property | Type | Description |
---|---|---|
$assets | array |
array
|
$localPath | string |
string
|
inherited public static extend (callable $callback)
Property | Type | Description |
---|---|---|
$callback | callable |
callable
|
inherited public extensionApplyInitCallbacks ()
inherited public static extensionExtendCallback (callable $callback) : void
Helper method for ::extend()
static method
Property | Type | Description |
---|---|---|
$callback | callable |
callable
|
inherited public extensionIsHiddenField ($name)
Property | Type | Description |
---|---|---|
$name | mixed |
mixed
|
inherited public extensionIsHiddenMethod ($name)
Property | Type | Description |
---|---|---|
$name | mixed |
mixed
|
inherited public flushAssets () : void
Disables the use, and subequent broadcast, of assets. This is useful to call during an AJAX request to speed things up. This method works by specifically targeting the hasAssetsDefined method.
inherited
public
getAssetPath (string $fileName, $assetPath = null
)
: string
Returns the URL to the provided asset. If the provided fileName is a relative path without a leading slash it will be assumbed to be relative to the asset path.
Property | Type | Description |
---|---|---|
$fileName | string |
string
|
$assetPath | mixed |
mixed
|
inherited public getAssetPaths () : array
Returns an array of all registered asset paths.
Assets will be prioritized based on their defined ordering.
inherited public static getCalledExtensionClass ()
inherited
public
getConfig (string $name = null
, mixed $default = null
)
: string
Safe accessor for configuration values.
Property | Type | Description |
---|---|---|
$name | string |
string
Config name, supports array names like "field[key]" |
$default | mixed |
mixed
Default value if nothing is found |
inherited
public
getConfigPath (string $fileName, mixed $configPath = null
)
: string
Locates a file based on it's definition. If the file starts with the ~ symbol it will be returned in context of the application base path, otherwise it will be returned in context of the config path.
Property | Type | Description |
---|---|---|
$fileName | string |
string
File to load. |
$configPath | mixed |
mixed
Explicitly define a config path. |
Full path to the config file.
inherited
public
getViewPath (string $fileName, $viewPaths = null
)
: string
Locates a file based on its definition. The file name can be prefixed with a symbol (~|$) to return in context of the application or plugin base path, otherwise it will be returned in context of this object view path.
If the fileName cannot be found it will be returned unmodified.
Property | Type | Description |
---|---|---|
$fileName | string |
string
|
$viewPaths | mixed |
mixed
|
inherited public getViewPaths () : array
Returns the active view path locations.
inherited
public
guessConfigPath (string $suffix = ""
)
: string
Guess the package path for the called class.
Property | Type | Description |
---|---|---|
$suffix | string |
string
An extra path to attach to the end |
inherited
public
guessConfigPathFrom (string $class, string $suffix = ""
)
: string
Guess the package path from a specified class.
Property | Type | Description |
---|---|---|
$class | string |
string
Class to guess path from. |
$suffix | string |
string
An extra path to attach to the end |
inherited
public
guessViewPath (string $suffix = ""
, boolean $isPublic = false
)
: string | null
Guess the package path for the called class.
Property | Type | Description |
---|---|---|
$suffix | string |
string
An extra path to attach to the end |
$isPublic | boolean |
boolean
Returns public path instead of an absolute one |
inherited
public
guessViewPathFrom (string $class, string $suffix = ""
, boolean $isPublic = false
)
: string | null
Guess the package path from a specified class.
Property | Type | Description |
---|---|---|
$class | string |
string
Class to guess path from. |
$suffix | string |
string
An extra path to attach to the end |
$isPublic | boolean |
boolean
Returns public path instead of an absolute one |
inherited public hasAssetsDefined () : bool
Returns true if assets any have been added.
inherited
public
makeAssets ($type = null
)
: string | null
Outputs <link>
and <script>
tags to load assets previously added
with addJs, addCss, & addRss method calls depending on the provided $type
Property | Type | Description |
---|---|---|
$type | mixed |
mixed
|
inherited
public
makeConfig (array $configFile = []
, array $requiredConfig = []
)
: array | stdClass
Reads the contents of the supplied file and applies it to this object.
Property | Type | Description |
---|---|---|
$configFile | array |
array
|
$requiredConfig | array |
array
|
inherited
public
makeConfigFromArray (array $configArray = []
)
: stdClass
Makes a config object from an array, making the first level keys properties of a new object.
Property | Type | Description |
---|---|---|
$configArray | array |
array
Config array. |
The config object
inherited
public
makeFileContents (string $filePath, array $extraParams = []
)
: string
Makes all views in context of the controller, not the behavior.
Property | Type | Description |
---|---|---|
$filePath | string |
string
Absolute path to the view file. |
$extraParams | array |
array
Parameters that should be available to the view. |
inherited
public
makeFormWidget (string $class, array $fieldConfig = []
, array $widgetConfig = []
)
: Backend\Classes\FormWidgetBase
Makes a form widget object with the supplied form field and widget configuration.
Property | Type | Description |
---|---|---|
$class | string |
string
Widget class name |
$fieldConfig | array |
array
A field name, an array of config or a FormField object. |
$widgetConfig | array |
array
An array of config. |
The widget object
inherited
public
makeLayout ($name = null
, array $params = []
, boolean $throwException = true
)
: string | bool
Render a layout, defaulting to the layout propery specified on the class
Property | Type | Description |
---|---|---|
$name | mixed |
mixed
|
$params | array |
array
|
$throwException | boolean |
boolean
|
The layout contents, or false.
inherited
public
makeLayoutPartial (string $partial, array $params = []
)
: string
Renders a layout partial
Property | Type | Description |
---|---|---|
$partial | string |
string
|
$params | array |
array
|
inherited
public
makePartial (string $partial, array $params = []
, boolean $throwException = true
)
: mixed
Render a partial file contents located in the views folder.
Property | Type | Description |
---|---|---|
$partial | string |
string
|
$params | array |
array
|
$throwException | boolean |
boolean
|
Partial contents or false if not throwing an exception.
inherited public makeView (string $view) : string
Loads the specified view. Applies the layout if one is set.
The view file must have the .php extension (or ".htm" for historical reasons) and be located in the views directory
Property | Type | Description |
---|---|---|
$view | string |
string
|
inherited
public
makeViewContent (string $contents, $layout = null
)
: string
Renders supplied contents inside a layout.
Property | Type | Description |
---|---|---|
$contents | string |
string
|
$layout | mixed |
mixed
|
inherited
public
makeWidget (string $class, array $widgetConfig = []
)
: mixed | Backend\Classes\WidgetBase
Makes a widget object with the supplied configuration file.
Property | Type | Description |
---|---|---|
$class | string |
string
Widget class name |
$widgetConfig | array |
array
An array of config. |
The widget object
inherited public mergeConfig (mixed $configA, mixed $configB) : stdClass
Merges two configuration sources, either prepared or not, and returns them as a single configuration object.
Property | Type | Description |
---|---|---|
$configA | mixed |
mixed
|
$configB | mixed |
mixed
|
The config object
inherited public orderAssets (array $assets) : array
Prioritize assets based on the given order.
Property | Type | Description |
---|---|---|
$assets | array |
array
|
inherited public resetSession () : void
Resets all session data related to this widget.
inherited
public
setConfig (mixed $config, array $required = []
)
Sets the configuration values
Property | Type | Description |
---|---|---|
$config | mixed |
mixed
Config object or array |
$required | array |
array
Required config items |
inherited protected addAsset (string $type, string $path, array $attributes) : void
Adds the provided asset to the internal asset collections
Property | Type | Description |
---|---|---|
$type | string |
string
|
$path | string |
string
|
$attributes | array |
array
|
inherited protected controllerMethodExists (string $methodName) : bool
Returns true in case if a specified method exists in the extended controller.
Property | Type | Description |
---|---|---|
$methodName | string |
string
Specifies the method name |
inherited protected extensionHideField ($name)
Property | Type | Description |
---|---|---|
$name | mixed |
mixed
|
inherited protected extensionHideMethod ($name)
Property | Type | Description |
---|---|---|
$name | mixed |
mixed
|
inherited protected getAssetEntryBuildPath (array $asset) : string
Internal helper, attaches a build code to an asset path
Property | Type | Description |
---|---|---|
$asset | array |
array
|
inherited protected getAssetScheme (string $asset) : string
Internal helper, get asset scheme
Property | Type | Description |
---|---|---|
$asset | string |
string
|
inherited protected getLocalPath (string | null $relativePath) : string
Property | Type | Description |
---|---|---|
$relativePath | string | null |
string | null
|
inherited
protected
getSession (string $key = null
, string $default = null
)
: string
Retrieves a widget related key/value pair from session data.
Property | Type | Description |
---|---|---|
$key | string |
string
Unique key for the data store. |
$default | string |
string
A default value to use when value is not found. |
inherited protected handleViewException (Throwable $e, integer $obLevel) : void
Handle a view exception.
Property | Type | Description |
---|---|---|
$e | Throwable |
Throwable
|
$obLevel | integer |
integer
|
inherited protected hideAction (mixed $methodName)
Protects a public method from being available as an controller action.
These methods could be defined in a controller to override a behavior default action. Such methods should be defined as public, to allow the behavior object to access it. By default public methods of a controller are considered as actions. To prevent this occurrence, methods should be hidden by using this method.
Property | Type | Description |
---|---|---|
$methodName | mixed |
mixed
Specifies a method name. |
inherited protected makeSessionId () : string
Returns a unique session identifier for this widget and controller action.
inherited protected putSession (string $key, mixed $value) : void
Saves a widget related key/value pair in to session data.
Property | Type | Description |
---|---|---|
$key | string |
string
Unique key for the data store. |
$value | mixed |
mixed
The value to store. |
inherited protected removeDuplicates () : void
Removes duplicate assets from the entire collection.