検索
試してみる
1つのフィールド、あらゆる種類の結果。ページ名はルーターから取得され、宣言は不要です。レコードは下に示された属性を持つエンティティから取得されます。各結果はどこに進むかを示しているため、バーはクリックが意味することについて何も決定する必要はありません。
プロバイダー
プロバイダーは見つけられるものの一群です。インターフェースを実装することが全体の登録であり、自動構成によってタグ付けされるため、アプリケーションに記述されたプロバイダーは存在することで検索に参加します。これらは、クエリが制限される名前によってここで応答するものです。
-
entity
Wexample\SymfonySearch\Class\Provider\EntitySearchProvider
-
route
Wexample\SymfonySearch\Class\Provider\RouteSearchProvider
class CommandSearchProvider extends AbstractSearchProvider
{
public function provide(SearchQuery $query): iterable
{
// yield $this->createResult($reference, $title)->setScore($score);
}
}
検索可能なエンティティ
クラスはエンティティが見つけられることを示し、そのプロパティはそれぞれの種類に基づいて何を示すかを示します — タイトルは読み取り、金額は数字、住所は全体または無であり、種類はSQLとポイントの両方を決定します。レガシーの7つのスコアリング関数のうち6つはそのリストの偽装でした。7番目は推論され、その1つがスコアリングクラスの名前を付けます。誰が尋ねるかによって答えが決まるエンティティは、provider: trueを追加し、自分自身のプロバイダーを取得します。
-
contact
Wexample\SymfonyOrganization\Entity\Contact
フィールド : name (text), email (email) -
demo_message
Wexample\SymfonyDesignSystemDemo\Entity\DemoMessage
フィールド : body (text, 5) -
demo_room
Wexample\SymfonyDesignSystemDemo\Entity\DemoRoom
フィールド : name (text) -
demo_user
Wexample\SymfonyUserDemo\Entity\DemoUser
フィールド : email (email), username (text), firstName (text), lastName (text) -
organization
Wexample\SymfonyOrganization\Entity\Organization
フィールド : name (text), vatNumber (text), legalIdentifier (text), email (email)
#[ORM\Entity]
#[Searchable(route: 'app_invoice_show')]
class Invoice extends AbstractEntity
{
#[SearchText]
protected string $label;
#[SearchAmount(points: 40)]
protected float $priceTotal;
}
API
結果はエンティティであり、そのエンドポイントはそのエンティティのコレクションであり、他には何もありません。同じPHPクラスから生成されたTypeScriptリポジトリは、どこにあるかを指示されずに呼び出されます — これは、上記のフィールドが使用しているものです。
クエリパラメーター
- search
探しているもの。空のクエリは、すべてではなく何も返しません。
- context
検索が行われる場所で、それが何に答えるかを決定します。出荷されたコンテキスト: default, header, form_field
- type
回答を1つの種類に制限します — エンティティ名またはプロバイダーキー。
- length
結果の数。欠如している場合、バンドルの設定が決定します。
curl "/api/search-result/list?search=dupont&context=header&length=5"
翻訳
バーはコンポーネントの4つの面から独自のラベルを読み取るため、プレースホルダーはマークアップには書かれません。一方、結果のタイトルはレコード自体またはルート名から取得されます — それらの翻訳はまだ接続されておらず、現在のページは人間らしく表示されたルート名を示しています。
# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...