You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Views过滤器默认值不生效,求正确设置方案

Laravel Views中过滤器默认值不生效

我尝试在Laravel Views中为过滤器添加默认值,但未达到预期效果。以下是当前实现:

GruposActiveFilter类:

use LaravelViews\Filters\Filter;
use Illuminate\Database\Eloquent\Builder;

class GruposActiveFilter extends Filter
{
    public function apply(Builder $query, $value, $request): Builder
    {
        return $query->where('Activo', $value);
    }

    public function options(): array
    {
        return [
            'Activo' => 1,
            'Inactivo' => 0,
        ];
    }
}

在ListView中:

protected function filters()
{
    return [
        new GruposActiveFilter,
    ];
}

已尝试的操作:

我尝试在过滤器类中添加default()方法,但该方法似乎未被识别:

public function default()
{
    return 1;
}

预期与实际行为:

  • 预期:页面首次加载时,过滤器默认选中“Activo”(值为1)并自动应用过滤。
  • 实际:过滤器未应用任何默认值,需手动选择过滤选项。

解决方法

1. 定义$defaultValue属性(推荐,适用于Laravel Views v2+)

直接在过滤器类中声明$defaultValue属性指定默认值,框架会自动识别并应用:

use LaravelViews\Filters\Filter;
use Illuminate\Database\Eloquent\Builder;

class GruposActiveFilter extends Filter
{
    public $defaultValue = 1;

    public function apply(Builder $query, $value, $request): Builder
    {
        return $query->where('Activo', $value);
    }

    public function options(): array
    {
        return [
            'Activo' => 1,
            'Inactivo' => 0,
        ];
    }
}

2. 在apply方法中兼容处理(兼容旧版本)

如果$defaultValue不生效,可在过滤逻辑中手动判断,当请求无过滤值时使用默认值:

public function apply(Builder $query, $value, $request): Builder
{
    $filterValue = $value ?? 1;
    return $query->where('Activo', $filterValue);
}

3. 实例化时手动设置默认值

在ListView的filters方法中初始化过滤器时,直接给实例赋值默认值:

protected function filters()
{
    $filter = new GruposActiveFilter();
    $filter->defaultValue = 1;

    return [
        $filter,
    ];
}

注意事项

  • 先确认Laravel Views版本,旧版本可能不支持$defaultValue,执行composer update laravel-views/laravel-views更新到最新版。
  • 清除浏览器缓存,避免前端缓存导致默认选中状态不显示。
  • 检查首次加载的请求参数,确认过滤器参数是否自动携带了默认值1。

内容的提问来源于stack exchange,提问作者Emmanuel Hernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:25:13