kphoen / rulerz-bundle
Symfony2 Bundle for RulerZ
Installs: 623 651
Dependents: 0
Suggesters: 0
Security: 0
Stars: 38
Watchers: 5
Forks: 26
Open Issues: 2
Type:symfony-bundle
Requires
- php: >=7.1
- kphoen/rulerz: ~0.17,>=0.19.3
- kphoen/rulerz-bridge: ^1.0
- symfony/framework-bundle: ^3.0|^4.0
Requires (Dev)
- liip/rmt: ^1.2
- matthiasnoback/symfony-dependency-injection-test: ^3.0
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^7.1
- symfony/phpunit-bridge: ^3.0|^4.0
README
This bundle integrates RulerZ into Symfony.
Installation
Require the bundle:
composer require 'kphoen/rulerz-bundle'
And declare it into your app/AppKernel.php
file:
public function registerBundles() { return array( // ... new KPhoen\RulerZBundle\KPhoenRulerZBundle(), ); }
Usage
This bundle registers a rulerz
service which is an instance of RulerZ\RulerZ
.
$rulerz = $this->container->get('rulerz'); $rulerz->filter(/* ... */);
See RulerZ's documentation for more information.
Custom operators
Custom operators can be added to RulerZ executors. The bundle provide a way to register new operators directly from the container, you just need to tag a service:
services: operator.array.like: class: RulerZ\Operator\ArrayExecutor\Like tags: - { name: rulerz.operator, target: native, operator: like }
In addition to the rulerz.operator
tag, two other values are needed:
target
: the compilation target we want to register the operator for ;operator
: the name that will be given to the operator in rules.
Important: Operators registered as classes must implement the __invoke
magic method as RulerZ expects custom operators to be defined as callable.
Validators
A rule validator is provided by the bundle. In its simplest form, it will only validate the syntax of a given rule. Unknown variables or operators won't be detected unless you define a whitelist of accepted values.
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert; class TaggingRule { /** * @var string * * @Assert\NotBlank() * @RulerZAssert\ValidRule( * allowed_variables={"title", "url", "isArchived", "isStared", "content", "language", "mimetype", "readingTime", "domainName"}, * allowed_operators={">", "<", ">=", "<=", "=", "is", "!=", "and", "not", "or"} * ) */ private $rule; }
Configuration reference
# app/config/config.yml rulerz: cache: "%kernel.cache_dir%/rulerz" debug: "%kernel.debug%" targets: native: false doctrine: false doctrine_dbal: false eloquent: false pomm: false solarium: false elasticsearch: false
The targets
section allows you to enable only the compilation targets needed
by your application.
Licence
This bundle is under the MIT licence.