Dropdown Scope
Filter Scope
dropdown
- filter using a single selection of multiple items.
status:
type: dropdown
options:
pending: Pending
active: Active
closed: Closed
The following properties are available for the filter.
Property | Description |
---|---|
options | available options for the filter, as an array. |
optionsMethod | take options from a method defined on the model or as a static method, eg Class::method . |
conditions | a custom SQL select statement to use for the filter. |
emptyOption | text to display when there is no available selections. |
modelScope | applies a model query scope method to the filter query, can be a model method name or a static PHP class method (Class::method ). The first argument will contain the model query that the widget will be attaching its value to, i.e. the parent model. |
You may pass custom SQL to the conditions as a string where :value
contains the filtered value.
status:
type: dropdown
conditions: status = :value
# ...
The dropdown filter does not display a label, the emptyOption
property can be used to set the default state.
status:
type: dropdown
emptyOption: Select Status
# ...
# PHP Interface
You may define a custom modelScope
in the model using the following example.
status:
label: Status
type: dropdown
modelScope: applyStatusCode
options:
active: Active
deleted: Deleted
The scopeApplyStatusCode method definition where the value is found in $scope->value
.
public function scopeApplyStatusCode($query, $scope)
{
if ($scope->value === 'active') {
return $query->withoutTrashed();
}
if ($scope->value === 'deleted') {
return $query->onlyTrashed();
}
}
You may dynamically supply options by passing a model method to the optionsMethod
property.
status:
label: Status
type: dropdown
optionsMethod: getStatusOptions
The getStatusOptions method definition.
public function getStatusOptions()
{
return [
'active' => 'Active',
'deleted' => 'Deleted',
];
}