Jet\DataListing_Filter_OptionSelect
Již předpřipravený filtr pro definici výběru hodnoty. Stačí implementovat vrácení názvu parametru, titulku formulářového pole, metodu definující možnosti pole SELECT a generování WHERE.
Příklad:
namespace JetApplicationModule\EventViewer\REST;
use Jet\DataListing_Filter_OptionSelect;
use Jet\Form_Field_Select;
use Jet\Logger;
use Jet\Tr;
class Listing_Filter_EventClass extends DataListing_Filter_OptionSelect {
public const KEY = 'event_class';
public function getKey(): string
{
return static::KEY;
}
public function getParamName() : string
{
return 'event_class';
}
public function getFormFieldLabel() : string
{
return 'Event class:';
}
protected function setFieldSelectOptions( Form_Field_Select $field ) : void
{
$options = [
'' => Tr::_( '- all -' ),
Logger::EVENT_CLASS_SUCCESS => Tr::_( 'success' ),
Logger::EVENT_CLASS_INFO => Tr::_( 'info' ),
Logger::EVENT_CLASS_WARNING => Tr::_( 'warning' ),
Logger::EVENT_CLASS_DANGER => Tr::_( 'danger' ),
Logger::EVENT_CLASS_FAULT => Tr::_( 'fault' ),
];
$field->setSelectOptions( $options );
}
public function generateWhere(): void
{
if( $this->selected_value ) {
$this->listing->addFilterWhere( [
'event_class' => $this->selected_value,
] );
}
}
}