2017-03-04 3 views
1

Ich brauche etwas Hilfe in meiner Laravel-Anwendung mit der Übergabe der Werte von einem Formular auf eine andere Seite. Ich habe eine Tabelle mit Daten zu Gebietsobjekten und möchte zwei (oder mehr) Gebietsobjekte auswählen und diese auf einer neuen Seite anzeigen können.Wie übergebe ich Daten an eine andere Seite in Laravel

In meinem index.blade.php habe ich das Aushöhlen Form:

<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 &amp; 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> 

Und ich möchte dann gehen können show_comparison.blade.php und sein, die Daten auf den beiden angezeigt werden (oder mehr) Bereiche, die ich ausgewählt habe.

In routes.php ich habe:

Route::post('/areas/comparison', '[email protected]_comparison'); 

Und dann in AreasController:

public function show_comparison(Area $area) 
{ 
    $formData = Request::all(); //Get the form data with the facade 

    return view('areas.show_comparison', compact('formData')); 
} 

Allerdings, wenn ich auf Senden klicken und es versucht, nehmen Sie mich es zu show_comparison.blade.php gibt den Fehler Nachricht "Versuch, Eigenschaft von Nicht-Objekt zu erhalten".

Hier ist show_comparison.blade.php: @extends ('Layout')

@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 

Idealfall die Daten in Form von {area1-> name} drucken Ich möchte in der Lage sein! und! {area2-> name}! nach meiner auswahl.

Wenn mir jemand zeigen kann, wie ich ausgewählte Daten an eine andere Seite weiterleiten soll, wäre das erstaunlich. (Danke, dass Sie sich die Zeit genommen haben, dies zu lesen.)

+0

können Sie zeigen Sie uns Ihre 'show_comparison.blade.php' Code –

+0

Ich habe die Ansicht hinzugefügt. –

Antwort

0

Ich bekam eine Antwort in einem anderen Forum. Diese Lösung übernimmt die ID, die das Formular übergibt, holt dann die entsprechenden Bereichsobjekte und übergibt diese in einem Array an die Ansicht show_comparisons.blade.php.

public function show_comparison(Request $request) 
{ 

$areas= Area::whereIn('id',$request->area)->get(); 

    return view('areas.show_comparison', compact('areas')); 
} 
Verwandte Themen