Buscar

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.

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