artvys / cake-search
CakePHP适配器,用于artvys/search包
1.0.0
2023-05-10 15:54 UTC
Requires
- php: ^8.1
- artvys/search: ^1.0
- cakephp/cakephp: 4.4.*
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.1
README
本包是CakePHP的适配器,用于artvys/search包。它提供了一些模板类,以简化与框架的集成。
1. 安装
本节描述了本包的安装过程。如果您已经安装了composer,则只需运行
composer require artvys/cake-search
您无需单独安装核心包。它将自动安装。
2. 实现您的TableSearchSource
本包提供了一个基类TableSearchSource,其中包含了从CakePHP的Table类中进行搜索的模板代码。
要使用它,您需要扩展它并实现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。请注意,您不需要直接使用TableRegistry或Router。您可以在那些需要的方法中注入依赖项,然后直接返回它们。
查看基类。它们包含了许多用于扩展的小方法,对于许多常见用例非常有用。
3. 接下来去哪里?
其余的文档可以在核心包artvys/search中找到。