Búsqueda avanzada y búsqueda por columna
Tres superficies de búsqueda relacionadas: el cuadro de búsqueda global, la búsqueda por columna en la cabecera y el panel de Búsqueda avanzada con múltiples condiciones.
1. El cuadro de búsqueda simple/global
La barra de herramientas de cada cuadrícula tiene un cuadro de búsqueda que busca en todas las columnas visibles a la vez. Cómo envuelve un término escrito en un valor SQL LIKE es personalizable con search_pattern():
public function search_pattern(string $pattern): self
$pattern debe contener el marcador de posición literal {term}, sustituido por el término escrito en el momento de la petición. Por defecto es '%{term}%' (contiene).
$xcrud->search_pattern('{term}%'); // starts with, instead of contains
$xcrud->search_pattern('%{term}'); // ends with
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
$pattern | string | - | Debe contener {term}. En caso contrario, lanza una excepción. |
Esto solo afecta al cuadro de búsqueda simple y a los cuadros de búsqueda por columna en la cabecera de abajo - los propios operadores de contiene/empieza por/termina en del panel de Búsqueda avanzada son elecciones explícitas por condición, sin verse afectados por search_pattern().
2. Búsqueda por columna en la cabecera
Cada columna también puede mostrar su propio pequeño cuadro de búsqueda justo debajo de su cabecera, permitiendo a un visitante filtrar por esa columna en concreto en lugar de buscar en todas las columnas visibles a la vez. Se activa/desactiva desde el menú "Más opciones" (⋯) de la barra de herramientas de la cuadrícula ("Show column search") - consulta Barra de herramientas de la cuadrícula y el menú Más opciones para ver el resto de lo que hay en ese menú. La elección de activar/desactivar del visitante se recuerda por navegador durante la sesión, así que no hace falta volver a activarla en cada carga de página.
Las condiciones de búsqueda por columna se combinan con el cuadro de búsqueda simple y con cualquier condición de Búsqueda avanzada - las tres restringen el conjunto de resultados juntas, no se sustituyen entre sí.
3. El panel de Búsqueda avanzada
Se abre desde un botón "Advanced" de la barra de herramientas y es un generador de filtros con múltiples condiciones: añade cuantas filas de condición quieras, cada una eligiendo un campo, un operador y un valor, y luego elige si las filas se combinan con AND ("All conditions") o con OR ("Any condition") antes de hacer clic en Apply.
$xcrud = Xcrud::get_instance();
$xcrud->table('products');
$xcrud->route('advanced-search-demo');
$xcrud->columns('productCode,productName,productLine,productVendor,quantityInStock,buyPrice,MSRP');
$xcrud->change_type('buyPrice', 'price', '2', ['prefix' => '$']);
$xcrud->change_type('MSRP', 'price', '2', ['prefix' => '$']);
No se requiere PHP adicional para activar el panel en sí - está integrado automáticamente en toda cuadrícula. En esta página, abrir "Advanced" y combinar, por ejemplo, productLine = "Classic Cars" AND buyPrice > 50 restringe el conjunto de resultados a las filas coincidentes, independientemente de lo que esté escrito en el cuadro de búsqueda simple.
La elección AND/OR solo se aplica a cómo se combinan entre sí las propias filas del panel - el resultado completo del panel sigue combinándose con AND respecto al cuadro de búsqueda simple y a cualquier filtro base permanente (where()) sin importar qué modo se elija.