我想在搜索表单中留下条件

I want to leave conditions in the search form

我想在搜索时留下搜索条件

然后我写了

project.index

<form action="{{ route('project.post.index') }}" method="post">
@csrf
<input type="search" name="project_name" placeholder="project_name"
@if($param->project_name != null)
    value="{{$param->project_name}}"
@else
    value="{!!null!!}"
@endif
>

项目控制器

$relevantKeys = $param = [
        'project_name' => null,
        'requester' => null,
        'user_name' => null,
        'status' => null,
        'requester_tell' => null,
        'division' => null,
    ];
foreach ($relevantKeys as $value) {
        if (!empty($request->{$value})) {
            $query = $query->where($value, 'like', '%' . $request->{$value} . '%');
            $param = $request->{$value};
            $a = 1;
        }
    }
    if ($a === 0) {
        $view = Project::where('status', '!=', 'completed')->get();
        return view('project.index', compact('view', 'cats', 'users', 'param'));
    }
    $view = $query->get();
    return view('project.index', compact('view', 'cats', 'users', 'param'));
}

我遇到了这个错误

正在尝试获取 属性 'project_name' 的非对象

因为你在发

$param->project_name as null

尝试在该变量中发送一些其他数据,如“-”或忽略该变量以继续。

您可以尝试使用 !empty 或者您不需要调用 else 部分。如果 'If' 部分未执行,则它将自动为空。

<input type="search" name="project_name" placeholder="project_name" value="@if(!empty($param->project_name)) {{$param->project_name}} @endif">

或者你也可以使用三元运算符

<input type="search" name="project_name" placeholder="project_name" value="{{ ($param->project_name) ? $param->project_name : '' }}">

<input type="search" name="project_name" placeholder="project_name" value="{{  $param['project_name'] ?? '' }}">