2016-03-24 12 views
1

Ich habe eine Ansicht in Laravel, die ich für das Einfügen von Datensätzen und das Aktualisieren von Datensätzen verwende. Wenn es um eine Checkbox kommt, verwende ich den folgenden Code:Wie mit absichtlich undefinierten Variablen in Laravel umgehen?

 {!! Form::checkbox('active', 1, $info->active) !!} 

$info bezieht sich auf den abgerufenen Datensatz aus einer Datenbank von der Steuerung zu der Ansicht geführt (ich etwas tun, wie $info = MyModel::findOrFail($id)), die eindeutig gilt nur, wenn ich Bearbeiten Sie den Datensatz. Wenn ich einen neuen Datensatz erstellen ist diese Variable nicht vorhanden ist und ich diesen Fehler:

Undefined variable

Die total Sinn macht, aber die Frage ist: Was ist der beste Weg, um dies zu realisieren ist. Sollte ich eine bedingte Aussage verwenden? Soll ich eine leere Variable erstellen? Sollte ich zwei verschiedene Checkboxen verwenden? Was wird hier empfohlen?

+0

Warum nicht einfach mit isset nach der Variablen suchen? –

+0

Ja, das ist eine der Optionen. Aber ist das der empfohlene Weg? Und wo würde ich das machen? Ich scheine das nicht innerhalb dieser Funktion zu tun, also muss es etwas um ihn herum sein. –

Antwort

1

Sie könnten einfach $info = new MyModel() für das Formular erstellen.

Es macht konzeptionell Sinn, hält Ihre Vorlagen sauber und vermeidet Doppelarbeit.

0

Sie sollten zwei separate Ansichten für Einfügen und Löschen verwenden. Deshalb Route Ressourcen Methoden wie Index, erstellen, zu speichern, zu zeigen, zu bearbeiten, zu aktualisieren, löschen usw.

In Ihrem Fall würde ich vorschlagen, dass Sie zwei Ansichten verwenden und die Konvention über Konfiguration Prinzip folgen:

public function create() 
{ 
    return view('post.create'); 
} 

public function store(Request $request) 
{ 
    $post = Post::create($request->all()); 
} 

public function edit() 
{ 
    return view('post.edit'); 
} 

public function update($id, Request $request) 
{ 
    $post = Post::whereId($id)->update($request->all()); 
} 
0

Sie können es wie folgt beim Erstellen:

// Controller. 
$user = new User; 

// View 
Form::model($user, ['route' => ['user.store', $user]]) 

ich diesen Ansatz verwendet haben, bevor genau Ihr Problem zu beheben.

Verwandte Themen