2016-07-01 7 views
1

Ich habe ein Problem zu lösen einige Berechnungen in Laravel 5.1, und bis jetzt die beste Lösung, die ich gefunden habe, ist die Erstellung von zwei verschiedenen Controllern, eine für die Berechnung für einen bestimmten Artikel zu behandeln:Zwei Controller und 1 View in Laravel

Route::get('company/convert/{note}','[email protected]'); 

Und einer für alle Artikel:

Route::get('company/convert','[email protected]'); 

Beide werden die gleiche Ansicht verwenden machen.

Meine Frage ist: Ist eine gute Praxis, dies zu tun?

In meinem Kopf ist eine gute Lösung, nur eine Route zu verwenden und eine bestimmte Notiz oder alle in einer Variablen durch die Anfrage zu erhalten. Etwas wie:

$ http.get ('/ Unternehmen/convert /', Daten)

Wo data wird 1 oder alle Noten erhalten, die konvertiert werden sollen.

S.S .: Ich benutze AngularJS, um diese Routen aufzurufen.

Antwort

2

Wenn Sie es vorziehen, ein Verfahren in Ihrem Controller mit müssen Sie Ihre Route ein wenig ändern:

Route::get('company/convert/{note?}','[email protected]'); 

Und Ihre Methode so etwas wie

public function NoteConvert($note=null) 
{ 
    if ($note == null) { 
     // do all convertions 
     return view() 
    } 
    // single convertion 
    ... 
} 

Auf diese Weise NoteConvert Methode wäre, wird derjenige sein, der mehrere und einzelne Konvertierungen verarbeiten wird.

Vergessen Sie nicht,

Route::get('company/convert','[email protected]'); 

Es wird nicht notwendig sein, mehr

bearbeiten zu entfernen: https://laravel.com/docs/5.2/routing#parameters-optional-parameters

+0

Das? stellt einen optionalen Parameter dar, ist das richtig? Wenn ja, ich denke, das ist eine saubere Lösung – ggderas

+0

Ja, wenn Sie einen Blick auf Dokumente werfen, können Sie verschiedene Routing-Optionen sehen, wie? für optionalen Parameter –

+0

Ich habe diesen Ansatz verwendet und für mich gearbeitet. Danke für die Hilfe Jungs o // –

1

der beste Weg für mich, wird ein optionaler Parameter in der URL übergeben und überprüfen Sie es auf dem Controller.

0

Ich denke, Ihre Aufgabe ist es, die Daten aller Elemente und spezifischen Daten mit Filter mit Hinweis Argument in der Ansicht zu produzieren.

i empfehlen Ihnen die Route zu erstellen, wie dies

Route::controller('company', 'ScenarioController'); 

dann erstellen Sie einen Controller mit zwei Funktionen wie diese

public function getIndex() 
      { 
      return view('convert'); 

     } 

hier konvertieren ist Name Ansicht Klinge.

public function postFilter($note) 
     { 
     $x= // do what you want 
     return view('convert', compact('x'));  
     } 

dann einen Filter in der Klinge fügen Sie eine Checkbox und die Form Aktion URL als "Unternehmen/filter/{note}" machen.

das ist die bessere Praxis, denke ich.

verweisen impliziten Routing hier. https://laravel.com/docs/5.1/controllers

Verwandte Themen