【问题标题】:How to pass all the rows from table to blade view?如何将所有行从表传递到刀片视图?
【发布时间】:2020-09-24 09:15:08
【问题描述】:

控制器:

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

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

【问题讨论】:

  • 你的问题没有解决
  • 哪一部分不清楚? @sta

标签: php laravel foreach


【解决方案1】:

如果我没听错的话,你的控制器应该是这样的

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 对象设置为您要提交到的控制器中的参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2022-01-01
    • 2020-05-19
    • 1970-01-01
    • 2019-11-13
    • 2017-03-09
    • 2017-09-03
    相关资源
    最近更新 更多