artvys/cake-search

CakePHP适配器,用于artvys/search包

1.0.0 2023-05-10 15:54 UTC

This package is auto-updated.

Last update: 2024-09-10 18:40:46 UTC


README

本包是CakePHP的适配器,用于artvys/search包。它提供了一些模板类,以简化与框架的集成。

1. 安装

本节描述了本包的安装过程。如果您已经安装了composer,则只需运行

composer require artvys/cake-search

无需单独安装核心包。它将自动安装。

2. 实现您的TableSearchSource

本包提供了一个基类TableSearchSource,其中包含了从CakePHPTable类中进行搜索的模板代码。

要使用它,您需要扩展它并实现3个抽象方法

use App\Model\Entity\Article;
use Artvys\Search\Cake\Engines\Compiled\SearchSources\Table\TableSearchSource;

class ArticlesTableSearchSource extends TableSearchSource {
    protected function table(): Table {
        return TableRegistry::getTableLocator()->get('Articles');
    }

    protected function fields(SearchFieldBuilder $builder, CompiledQuery $query, int $limit): void {
        $builder->add(Field::contains('title'))
            ->add(Field::contains('body'));
    }

    protected function makeResultMapper(): callable {
        return fn(Article $a) => SearchResult::make($a->title, $a->body, Router::url(['controller' => 'Articles', 'action' => 'edit']));
    }
}

这些方法做了3件简单的事情。您需要指定要搜索的哪个Table,要使用哪些列以及如何将实体实例转换为SearchResult。请注意,您不需要直接使用TableRegistryRouter。您可以在那些需要的方法中注入依赖项,然后直接返回它们。

查看基类。它们包含了许多用于扩展的小方法,对于许多常见用例非常有用。

3. 接下来去哪里?

其余的文档可以在核心包artvys/search中找到。