جستجو
تجربه کنید
یک فیلد، هر نوع نتیجه. نامهای صفحه از روتر میآیند و نیازی به اعلام ندارند؛ رکوردها از موجودیتهایی میآیند که ویژگی زیر را دارند. هر نتیجه نشان میدهد که به کجا میرود، بنابراین نوار هیچ تصمیمی در مورد معنای یک کلیک ندارد.
تأمینکنندگان
یک تأمینکننده یک خانواده از چیزهای قابل پیدا کردن است. پیادهسازی رابط، کل ثبتنام است — خودکارسازی آن را برچسبگذاری میکند، بنابراین یک تأمینکننده که در یک برنامه نوشته شده است، با وجود آن به جستجو ملحق میشود. اینها کسانی هستند که در اینجا پاسخ میدهند، بر اساس نامی که یک پرسش خود را به آن محدود میکند.
-
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 و هم امتیازها را تعیین میکند. شش مورد از هفت تابع امتیازدهی میراث، همان لیست در لباس مبدل بودند. هفتمی استدلال کرد و آن یکی یک کلاس امتیازدهی را نامگذاری میکند؛ موجودیتی که پاسخ آن به اینکه چه کسی میپرسد بستگی دارد، تأمینکننده: 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
یک نتیجه یک موجودیت است، بنابراین نقطه پایانی آن مجموعهای از آن موجودیت و هیچ چیز دیگر است. مخزن TypeScript که از همان کلاس PHP تولید شده است، بدون اینکه به او گفته شود کجاست، آن را فراخوانی میکند — که همان چیزی است که فیلد بالا از آن استفاده میکند.
پارامترهای پرسش
- search
چه چیزی در حال جستجو است. یک پرسش خالی پاسخ هیچ چیزی را نمیدهد تا همه چیز را.
- context
جایی که جستجو از آن انجام میشود، که تعیین میکند چه چیزی ممکن است پاسخ دهد. زمینههای ارسال شده: default, header, form_field
- type
پاسخ را به یک نوع محدود میکند — یک نام موجودیت یا یک کلید تأمینکننده.
- length
چند نتیجه. در صورت نبود، پیکربندی بسته تصمیم میگیرد.
curl "/api/search-result/list?search=dupont&context=header&length=5"
ترجمهها
نوار برچسبهای خود را از چهار سمت مؤلفه میخواند، بنابراین یک نشانگر هرگز در نشانهگذاری نوشته نمیشود. از سوی دیگر، عناوین نتایج از رکورد خود یا از نام مسیر میآیند — ترجمه آنها هنوز راهاندازی نشده است، و یک صفحه در حال حاضر نام مسیر خود را به صورت انسانی نمایش میدهد.
# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...