/

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ámetroTipoPredeterminadoDescripción
$patternstring-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.