Buscar
Pruébalo
Un campo, todo tipo de resultado. Los nombres de las páginas provienen del enrutador y no necesitan declaración; los registros provienen de las entidades que llevan el atributo a continuación. Cada resultado lleva a dónde va, por lo que la barra no tiene nada que decidir sobre lo que significa un clic.
Proveedores
Un proveedor es una familia de cosas encontrables. Implementar la interfaz es todo el registro — la autoconfiguración lo etiqueta, por lo que un proveedor escrito en una aplicación se une a la búsqueda al existir. Estos son los que responden aquí, por el nombre al que una consulta se restringe.
-
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);
}
}
Entidades buscables
La clase dice que una entidad es encontrable; sus propiedades dicen sobre qué, cada una con su tipo — un título se lee, una cantidad es una cifra, una dirección es total o nada — y el tipo decide tanto el SQL como los puntos. Seis de las siete funciones de puntuación del legado eran esa lista disfrazada. La séptima razonaba, y esa nombra una clase de puntuación; la entidad cuya respuesta depende de quién pregunta añade provider: true y obtiene un proveedor propio.
-
contact
Wexample\SymfonyOrganization\Entity\Contact
Campos : name (text), email (email) -
demo_message
Wexample\SymfonyDesignSystemDemo\Entity\DemoMessage
Campos : body (text, 5) -
demo_room
Wexample\SymfonyDesignSystemDemo\Entity\DemoRoom
Campos : name (text) -
demo_user
Wexample\SymfonyUserDemo\Entity\DemoUser
Campos : email (email), username (text), firstName (text), lastName (text) -
organization
Wexample\SymfonyOrganization\Entity\Organization
Campos : 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;
}
La API
Un resultado es una entidad, por lo que su punto final es la colección de esa entidad y nada más. El repositorio de TypeScript generado a partir de la misma clase PHP lo llama sin ser informado de dónde está — que es lo que utiliza el campo anterior.
Parámetros de consulta
- search
Qué se está buscando. Una consulta vacía no responde nada en lugar de todo.
- context
Desde dónde se realiza la búsqueda, lo que decide lo que puede responder. Contextos enviados: default, header, form_field
- type
Restringe la respuesta a un tipo — un nombre de entidad, o una clave de proveedor.
- length
Cuántos resultados. Ausente, la configuración del paquete decide.
curl "/api/search-result/list?search=dupont&context=header&length=5"
Traducciones
La barra lee sus propias etiquetas de las cuatro caras del componente, por lo que nunca se escribe un marcador de posición en el marcado. Los títulos de los resultados, por otro lado, provienen del propio registro o del nombre de la ruta — traducir esos aún no está cableado, y una página actualmente muestra su nombre de ruta humanizado.
# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...