Maslosoft Framework Documentation
Flexible Application Foundation
Enum Decorator
Enum decorator allow styling of elements based on value of field.
To setup enum decorator, there must be enumerable class created. This should extend
from EnumBase
class. To define enumerable values,
create constants in this class.
To set values to CSS classes mapping, define static method cssClasses()
.
This should return array with keys of constant and value of CSS classes, ie:
/**
* Get css class for message type
* @return string[]
*/
public static function cssClasses()
{
return [
self::Standard => '',
self::Success => 'btn-success',
self::Notice => 'btn-info',
self::Warning => 'btn-warning',
self::Error => 'btn-danger',
self::None => 'btn-none'
];
}
To apply this styling to model use @Decorator
annotation. First param is decorator type
second is enum class name. Class literals can be used here. Use
statments can be used
to shorten class names to make code more readable.
To render css styled radiobutton list - use form render with @FormRenderer
annotation
and EnumCss
as type. Second param is enum class.
Example of using enum decorator and form renderer
for grid row on Message
class:
/**
* // Type of message, be it success, notice, warning etc.
* @Label('Type')
*
* @Renderer('Enum', MessageType)
* @FormRenderer(EnumCss, MessageType)
*
* @Decorator(RowEnumCss, MessageType)
* @Decorator(RowAction, 'view')
*
* @RequiredValidator
*
* @see EnumCss
* @see RowAction
* @see RowEnumCss
* @see MessageType
* @var enum
*/
public $type;