tomaskemok/custom-nova-dependent-filter

Filtro dependiente y searchable para Laravel Nova con soporte para múltiples dependencias.

Installs: 2

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/tomaskemok/custom-nova-dependent-filter

dev-master 2025-10-02 03:20 UTC

This package is auto-updated.

Last update: 2026-01-02 03:51:34 UTC


README

Este paquete proporciona un filtro personalizado para Laravel Nova que permite crear filtros dependientes con funcionalidad searchable. Soporta múltiples dependencias entre filtros.

Instalación

  1. Clona o descarga este repositorio en la carpeta nova-components/DependentSearchableFilter de tu proyecto Laravel.
  2. Ejecuta composer install dentro de la carpeta del paquete si es necesario.
  3. Compila los assets JS/Vue del filtro:
    • Instala dependencias JS:
      cd nova-components/DependentSearchableFilter
      npm install
    • Compila los assets:
      npm run dev
      # o para producción
      npm run prod
  4. Registra el filtro en tu recurso Nova.

Uso

Ejemplo avanzado de integración

  1. Crea los filtros en app/Nova/Filters:
use DependentSearchableFilter\DependentSearchableFilter;
use Illuminate\Http\Request;
use App\Models\Category;
use App\Models\Subcategory;

class CategoryFilter extends DependentSearchableFilter
{
    public function __construct()
    {
        parent::__construct([]); // Sin dependencias
    }

    public function options(Request $request)
    {
        return Category::pluck('name', 'id')->toArray();
    }
}

class SubcategoryFilter extends DependentSearchableFilter
{
    public function __construct()
    {
        parent::__construct(['category']); // Depende de CategoryFilter
    }

    public function options(Request $request)
    {
        $categoryId = $request->get('category');
        if ($categoryId) {
            return Subcategory::where('category_id', $categoryId)->pluck('name', 'id')->toArray();
        }
        return [];
    }
}
  1. Registra los filtros en tu recurso Nova:
use App\Nova\Filters\CategoryFilter;
use App\Nova\Filters\SubcategoryFilter;

public function filters(Request $request)
{
    return [
        new CategoryFilter(),
        new SubcategoryFilter(),
    ];
}

Solución de errores comunes

  • Si ves errores de clases desconocidas (Illuminate\Http\Request, App\Models\Category, etc.), asegúrate de tener los modelos y dependencias correctas en tu proyecto Laravel.
  • Instala dependencias con:
    • composer require laravel/nova
    • composer install
  • Si usas modelos personalizados, reemplaza Category y Subcategory por los tuyos.

Personalización

  • Puedes definir la lógica de opciones en el método options del filtro.
  • El filtro es searchable y actualiza sus opciones dinámicamente según los valores seleccionados en los filtros padres.

Estructura

  • src/DependentSearchableFilter.php: Filtro Nova PHP.
  • resources/js/components/DependentSearchableFilter.vue: Componente Vue para la UI.

Contribuciones

¡Se aceptan PRs y sugerencias!