Поиск
Попробовать
Одно поле, все виды результатов. Названия страниц берутся из маршрутизатора и не требуют объявления; записи приходят от сущностей, имеющих атрибут ниже. Каждый результат содержит информацию о том, куда он ведет, так что панель не должна решать, что означает клик.
Поставщики
Поставщик — это одна семья находящихся вещей. Реализация интерфейса — это вся регистрация — автоконфигурация помечает это, так что поставщик, написанный в приложении, присоединяется к поиску, просто существуя. Это те, кто отвечает здесь, по имени, к которому ограничивается запрос.
-
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
Сколько результатов. При отсутствии этого, конфигурация пакета решает.
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...