Laravel blade.php 中的隐藏输入

Hidden inputs in Laravel blade.php

嘿,所以我正在尝试按宠物类型对条目进行排序,下面的代码来自我的 blade.php

<div>
                        <td>
                            <form>
                                @csrf
                                <input name="cat" type="hidden" value="cat">
                                <a name="cat" href="{{ url('sorting') }}" value="cat">Cat</a>
                            </form>
                        </td>
                    </div>

在 blade 文件中,我有多个 links,例如猫、狗、兔子,它们基本上充当过滤选项

我的控制器中有一个排序方法可以执行以下操作

 public function sorting(Request $request){
        if($request->input('cat') === 'cat'){
            $pets = Pet::Where('type', 'cat')->get();
            return view('index', compact('pets'));
        }
}

在我的排序方法中,我试图检查猫 link 是否被点击,如果是,它会 return 只有猫类型的宠物,我遇到的问题是我的 $request->input('cat') return 为 null。我该如何纠正?

您的代码中存在多个问题:

  1. 您似乎无法真正提交表单。 post 中的 link 不会自己完成(除非你在 JS 中有关于 link 的事件)
  2. <a>-tags 没有 value-attribute 而 name-attribute 对于 links 意味着完全不同的东西并且不用于提交数据通过表格。
  3. 没有方法的表单将默认使用 GET。您正在尝试使用 $request->input() 检索 PHP 中的值,该值用于 POST 请求。对于 GET 请求(使用查询字符串传递数据),使用 $request->query().

但是...您不需要表格。只需在 link 中将值作为查询参数传递即可:

<td>
    <a href="{{ url('sorting') }}?sort=cat">Cat</a>
</td>

然后在您的 PHP 代码中,使用以下方法检索值:

if ($request->query('sort') === 'cat') {
    // your code
}