A CakePHP Tools plugin containing lots of useful helpers, behaviors, components, shells, ...
Added Enum support for Bitmasked behavior
use App\Model\Enum\CommentStatus;
$this->Comments->addBehavior('Tools.Bitmasked', [
'bits' => CommentStatus::class,
'mappedField' => 'statuses'],
);
By using an Enum for bits it will automatically switch the incoming and outcoming bit values to Enum instances.
You can also manually set the bits using an array, but then you would have to also set enum
to the Enum class:
$this->Comments->addBehavior('Tools.Bitmasked', [
'bits' => CommentStatus::tryFrom(CommentStatus::None->value)::options(),
'enum' => CommentStatus::class,
'mappedField' => 'statuses'],
);
Live demo: https://sandbox.dereuromark.de/sandbox/tools-examples/bitmask-enums
Added EnumOptionsTrait
as addon to your enums to have options()
method available in your templates etc.
It allows also narrowing and re-ordering of your enum options based on the use case.
use App\Model\Enum\UserStatus;
$options = UserStatus::options();
// or for narrowing/re-ordering
$options = UserStatus::options([UserStatus::ACTIVE, UserStatus::INACTIVE]);
echo $this->Form->control('status', ['options' => $options]);