我在laravel应用程序中需要一些帮助,将值从表单传递到另一个页面。我有一个包含区域对象数据的表,我希望能够选择两个(或更多)区域对象,然后在新页面中查看这些对象。
在我的index.blade.php中,我有一个空洞的形式:
<form method = "POST" action="/areas/comparison" id="preferencesForm" class="form-group">
!{csrf_field()}!
<table id='areas_table' class="table table-striped">
<thead class="thead-default">
<tr>
<th>Select</th>
<th>Area</th>
<th>Overall Score</th>
<th>Housing Affordability Ratio</th>
<th>Mean House Price</th>
<th>Crime Level</th>
<th>Green Space</th>
<th>Good GCSE's</th>
<th>Number of Pubs & Restaraunts:</th>
<th>Superfast Broadband</th>
</tr>
</thead>
<tbody>
@foreach ($areas as $area)
<tr>
<td scrope="row"><input type="checkbox" name="area[]" value="!{$area->id}!"></td>
<th><a href="/areas/!{$area->id}!">!{$area->name}!</a></th>
<td>!{Helpers::calculateOverallScore($area)}!</td>
<td>!{$area->housing_affordability_ratio}!</td>
<td>£!{$area->mean_house_price_2015}!</td>
<td>!{$area->crime}!</td>
<td>!{$area->greenspace*100}!%</td>
<td>!{$area->five_good_gcses*100}!%</td>
<td>!{$area->restaurants}!/km<sup>2</sup></td>
<td>!{$area->superfast_broadband*100}!%</td>
</tr>
@endforeach
@endif
</tbody>
</table>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="submit" id="compare_button" class="btn btn-primary" value="Compare"/>
</form>
然后我想转到show_comparison.blade.php并能够显示我选择的两个(或更多)区域的数据。
在routes.php中我有:
Route::post('/areas/comparison', 'AreasController@show_comparison');
然后在AreasController中:
public function show_comparison(Area $area)
{
$formData = Request::all(); //Get the form data with the facade
return view('areas.show_comparison', compact('formData'));
}
然而,当我点击提交并尝试将我带到show_comparison.blade.php时,它会返回错误消息“试图获取非对象的属性”。
这是show_comparison.blade.php: @extends( '布局')
@section('content')
<div class="container">
<a href="/areas" class="btn btn-primary">Back</a>
<h1>Comparison</h1>
<p>Hello, this is the comparison page. !{$formData}!</p>
</div>
@stop
理想情况下,我希望能够以!{area1-&gt; name}的形式打印数据!和!{area2-&gt; name}!根据我的选择。
如果有人能够证明我应该如何将所选数据传递到另一个令人惊叹的页面。 (感谢您抽出宝贵时间阅读本文。)
答案 0 :(得分:0)
我在另一个论坛上得到了答案。此解决方案将获取表单传递给它的id,然后将获取相应的区域对象并将这些对象传递给show_comparisons.blade.php视图。
public function show_comparison(Request $request)
{
$areas= Area::whereIn('id',$request->area)->get();
return view('areas.show_comparison', compact('areas'));
}