首页 > 解决方案 > 如何将所有行从表传递到刀片视图?

问题描述

控制器:

public function index(){
    $bike1 = Bike::get()->first();
    $bike2 = Bike::get()->skip(1)->first();
    return view('compare.index')->with(['bike1'=> $bike1, 'bike2'=> $bike2 ]);
}

在这里,我只将第一行和第二行传递给刀片视图。

刀片视图:

Select first bike
<form action ="{{ route('compare.get', [$bike1->id, $bike2->id])  }}" method="get">
    <div class="first_bike" style="width:200px;">
        <select name="bike1">
            <option value="{{ $bike1->id }}"> {{ $bike1->name }}</option>
        </select>
    </div>
    <br>
    Select second bike
    <div class="second_bike" style="width:200px;">
        <select name="bike2">
            <option value="{{ $bike2->id }}"> {{ $bike2->name }}</option>
        </select>
    </div>
    <br>
    <button type="submit"> Compare </button> 
</form>

get 控制器将值传递给另一个显示数据的视图。有用。

如何将所有行传递给刀片视图?我知道我可以使用所有函数并循环刀片中的变量来获取所有行。像这样

@foreach($bike1 as $b1)
<option value="{{ $b1->id }}"> {{ $b1->name }}</option>
@endforeach

@foreach($bike2 as $b2)
<option value="{{ $b2->id }}"> {{ $b2->name }}</option>
@endforeach

如果这样做,那么如何在表单的操作属性中使用$b1and作为路由参数?$b2我可以从控制器操纵解决方案,让我的刀片保持原样吗?或者我如何改变刀片视图以实现我的目标?我被困住了

标签: phplaravelforeach

解决方案


好吧,如果我让你正确,你的控制器应该像

public function index(){
$bike1 = Bike::all();
$bike2 = Bike::all();
return view('compare.index')->with(['bike1'=> $bike1, 'bike2'=> $bike2 ]);

}

然后你修改你的观点

Select first bike
<form action ="{{ route('compare.get'}}" method="get">
    <div class="first_bike" style="width:200px;">
        <select name="bike1">
            @foreach($bike1 as $b1)
            <option value="{{ $b1->id }}"> {{ $b1->name }}</option>
            @endforeach
        </select>
    </div>
    <br>
    Select second bike
    <div class="second_bike" style="width:200px;">
        <select name="bike2">
            @foreach($bike2 as $b2)
           <option value="{{ $b2->id }}"> {{ $b2->name }}</option>
            @endforeach
        </select>
    </div>
    <br>
    <button type="submit"> Compare </button> 
</form>

对于提交,您不必将它们作为路由参数,只需让表单提交并在您将表单提交到的控制器中获取 GET 变量,您可以使用 Request 对象来执行此操作

$bike1 = Request->input('bike1');
$bike2 = Request->input('bike2');

希望您理解这一点,只需确保将 Request 对象设置为您要提交到的控制器中的参数


推荐阅读