Skip to content

K-Phoen/RulerZBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c9dc901 · Oct 1, 2018

History

98 Commits
Sep 16, 2018
Oct 1, 2018
Oct 1, 2018
Sep 16, 2018
Jan 27, 2017
Oct 19, 2015
Oct 19, 2015
Jan 26, 2017
Jan 26, 2017
Apr 18, 2018
Sep 17, 2018
Nov 1, 2015
Sep 16, 2018
Feb 7, 2015
Oct 22, 2017
Oct 1, 2018
Oct 1, 2018
Sep 17, 2018

Repository files navigation

RulerZBundle Build Status

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.