kphoen/rulerz-bundle

Symfony2 Bundle for RulerZ

Maintainers

👁 K-Phoen

Package info

github.com/K-Phoen/RulerZBundle

Type:symfony-bundle

pkg:composer/kphoen/rulerz-bundle

Statistics

Installs: 657 807

Dependents: 0

Suggesters: 0

Stars: 37

Open Issues: 2

0.15.0 2018-09-17 09:02 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT f25f2eddfd311047f0f0ece2684b1f6463cc41ad

  • Kévin Gomez <contact.woop@kevingomez.fr>

doctrinespecificationrulerrulerz

This package is auto-updated.

Last update: 2026-06-29 01:01:31 UTC


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.