بحث

بحث

جربه

حقل واحد، كل نوع من النتائج. أسماء الصفحات تأتي من الموجه ولا تحتاج إلى إعلان؛ السجلات تأتي من الكيانات التي تحمل السمة أدناه. كل نتيجة تحمل وجهتها، لذا لا يتعين على الشريط اتخاذ قرار بشأن ما يعنيه النقر.

المزودون

المزود هو عائلة واحدة من الأشياء القابلة للاكتشاف. تنفيذ الواجهة هو التسجيل الكامل - التكوين التلقائي يحدد ذلك، لذا فإن المزود المكتوب في تطبيق ينضم إلى البحث بوجوده. هؤلاء هم الذين يجيبون هنا، بالاسم الذي تقتصر عليه الاستعلام.

  • 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 والنقاط. ستة من سبع وظائف تسجيل الدرجات في التراث كانت تلك القائمة متخفية. السابع كان منطقيًا، وتلك تسمي فئة تسجيل الدرجات؛ الكيان الذي تعتمد إجابته على من يسأل يضيف 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;
}

واجهة برمجة التطبيقات

النتيجة هي كيان، لذا فإن نقطة النهاية الخاصة بها هي مجموعة ذلك الكيان ولا شيء آخر. مستودع TypeScript الناتج عن نفس فئة PHP يناديها دون أن يُقال له أين هي - وهو ما يستخدمه الحقل أعلاه.

معلمات الاستعلام

  • search

    ما الذي يتم البحث عنه. الاستعلام الفارغ لا يجيب على شيء بدلاً من كل شيء.

  • context

    من أين يتم إجراء البحث، مما يحدد ما يمكن أن يجيب عليه. السياقات المشحونة : default, header, form_field

  • type

    يقتصر الجواب على نوع واحد - اسم كيان، أو مفتاح مزود.

  • length

    عدد النتائج. في حالة الغياب، يحدد تكوين الحزمة.

/api/search-result/list
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...