首页 > 解决方案 > 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>

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

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

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

在我的排序方法中,我试图检查是否单击了 cat 链接,如果是,它将仅返回 cat 类型的宠物,我遇到的问题是我$request->input('cat')的返回 null。我将如何纠正这一点?

标签: phplaravellaravel-blade

解决方案


您的代码中有多个问题:

  1. 您似乎没有办法实际提交表单。帖子中的链接不会自行完成(除非您在 JS 中的该链接上有一些事件)
  2. <a>-tags 没有value-attribute 并且name-attribute 对链接意味着完全不同的东西,而不是通过表单提交数据。
  3. 没有方法的表单将GET用作默认值。您正在尝试使用-requests检索 PHP$request->input()中的值。POST对于 GET 请求(使用查询字符串传递数据),使用$request->query().

但是...您不需要表格。只需将该值作为链接中的查询参数传递:

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

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

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

推荐阅读