Поиск

Поиск

Попробовать

Одно поле, все виды результатов. Названия страниц берутся из маршрутизатора и не требуют объявления; записи приходят от сущностей, имеющих атрибут ниже. Каждый результат содержит информацию о том, куда он ведет, так что панель не должна решать, что означает клик.

Поставщики

Поставщик — это одна семья находящихся вещей. Реализация интерфейса — это вся регистрация — автоконфигурация помечает это, так что поставщик, написанный в приложении, присоединяется к поиску, просто существуя. Это те, кто отвечает здесь, по имени, к которому ограничивается запрос.

  • 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;
}

API

Результат — это сущность, так что её конечная точка — это коллекция этой сущности и ничего больше. Репозиторий 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...