PHP code example of gam6itko / spiral-validator-manticore-search

1. Go to this page and download the library: Download gam6itko/spiral-validator-manticore-search library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gam6itko / spiral-validator-manticore-search example snippets




declare(strict_types=1);

use Gam6itko\Spiral\Validator\ManticoreSearch\ManticoreSearchChecker;

return [
    'checkers' => [
        // ... the default spiral/validator checkers
        'manticore' => ManticoreSearchChecker::class,
    ],
];

use Gam6itko\Spiral\Validator\ManticoreSearch\ManticoreSearchChecker;
use Spiral\Boot\Bootloader\Bootloader;
use Spiral\Validator\Bootloader\ValidatorBootloader;

final class AppBootloader extends Bootloader
{
    public function init(ValidatorBootloader $validator): void
    {
        $validator->addChecker('manticore', ManticoreSearchChecker::class);
    }
}

use Spiral\Filters\Attribute\Input\Query;
use Spiral\Filters\Model\Filter;
use Spiral\Filters\Model\FilterDefinitionInterface;
use Spiral\Filters\Model\HasFilterDefinition;
use Spiral\Validator\FilterDefinition;

final class NewsSearchFilter extends Filter implements HasFilterDefinition
{
    #[Query]
    public string $search;

    public function filterDefinition(): FilterDefinitionInterface
    {
        return new FilterDefinition([
            'search' => [
                'string::trim',
                ['string::length', 256],
                // only `title` and `body` may be used with the `@` operator
                ['manticore::query', ['title', 'body']],
            ],
        ]);
    }
}

['manticore::query'] // `@whatever word` passes, `@whatever` (no operand) does not

$checker = new ManticoreSearchChecker();
$checker->query('"bitcoin rate"~5 -scam', ['title', 'body']); // true
$checker->query('bitcoin | -scam', ['title', 'body']);        // false