Cerca
Provalo
Un campo, ogni tipo di risultato. I nomi delle pagine provengono dal router e non necessitano di dichiarazione; i record provengono dalle entità che portano l'attributo qui sotto. Ogni risultato indica dove va, quindi la barra non deve decidere cosa significa un clic.
Fornitori
Un fornitore è una famiglia di cose rintracciabili. Implementare l'interfaccia è l'intera registrazione — l'autoconfigurazione lo etichetta, quindi un fornitore scritto in un'applicazione si unisce alla ricerca semplicemente esistendo. Questi sono quelli che rispondono qui, con il nome a cui una query si limita.
-
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);
}
}
Entità ricercabili
La classe indica che un'entità è rintracciabile; le sue proprietà indicano su cosa, ognuna con il suo tipo — un titolo è leggibile, un importo è un numero, un indirizzo è tutto o niente — e il tipo decide sia il SQL che i punti. Sei delle sette funzioni di punteggio dell'eredità erano quella lista travestita. La settima ragionava, e quella nomina una classe di punteggio; l'entità la cui risposta dipende da chi sta chiedendo aggiunge provider: true e ottiene un fornitore tutto suo.
-
contact
Wexample\SymfonyOrganization\Entity\Contact
Campi : name (text), email (email) -
demo_message
Wexample\SymfonyDesignSystemDemo\Entity\DemoMessage
Campi : body (text, 5) -
demo_room
Wexample\SymfonyDesignSystemDemo\Entity\DemoRoom
Campi : name (text) -
demo_user
Wexample\SymfonyUserDemo\Entity\DemoUser
Campi : email (email), username (text), firstName (text), lastName (text) -
organization
Wexample\SymfonyOrganization\Entity\Organization
Campi : 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;
}
L'API
Un risultato è un'entità, quindi il suo endpoint è la collezione di quell'entità e nient'altro. Il repository TypeScript generato dalla stessa classe PHP lo chiama senza essere detto dove si trova — ed è ciò che il campo qui sopra utilizza.
Parametri della query
- search
Cosa si sta cercando. Una query vuota non risponde a nulla piuttosto che a tutto.
- context
Da dove viene effettuata la ricerca, il che decide a cosa può rispondere. Contesti inviati: default, header, form_field
- type
Limita la risposta a un tipo — un nome di entità o una chiave di fornitore.
- length
Quanti risultati. In assenza, la configurazione del pacchetto decide.
curl "/api/search-result/list?search=dupont&context=header&length=5"
Traduzioni
La barra legge le proprie etichette dalle quattro facce del componente, quindi un segnaposto non viene mai scritto nel markup. I titoli dei risultati, d'altra parte, provengono dal record stesso o dal nome della route — tradurre quelli non è ancora attivato, e una pagina attualmente mostra il suo nome di route umanizzato.
# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...