2016-07-16 5 views
0

Ich möchte einen Standardwert für mein Modell Attribut haben:Was ist der richtige Weg, um einen Standardwert nur für die CREATE-Ansicht zu haben?

_form.blade.php Code: {!! Form::text('attribute','Default Value') !!}

Als _form.blade.php geteilt wird sowohl für create.blade.php und edit.blade.php, sind immer beide Ansichten den Standardwert anzeigt: Default Value.

Was ist der richtige Weg, um einen Standardwert nur für die CREATE-Ansicht zu haben? Die EDIT-Ansicht sollte also immer den Wert des gespeicherten Modells anzeigen.


Es scheint wie eine dumme Frage, aber ich bin eine lange Zeit über dieses rätselhaft, und ich möchte die richtig Art und Weise wissen, dass zu tun. Ich habe einige Ideen, wie zum Beispiel:

  • nicht eine gemeinsame Datei für erstellen/bearbeiten (_form.blade.php) Verwenden Sie (ich glaube, es ist keine gute Idee).
  • Setzen Sie die Standardvariable im Controller (auch nicht gut).

Antwort

0
{!! Form::text('name', (isset($savedModel)) ? $savedModel->name : "your default value") !!} 

Ich habe keine ternäre in einem Form Fassadenelement versucht, aber es kann funktionieren.

+0

Ich glaube, ich habe mich schlecht ausgedrückt. Das Problem ist kein dynamischer Standardwert. Es liegt daran, dass es auch den Standardwert im EDIT-Formular anzeigt, in dem der Wert des gespeicherten Modells angezeigt werden soll. –

+0

@LucianoNascimento, ich glaube, das Update sollte dies für Sie erledigen. Überprüfen Sie das gespeicherte Modell. Wenn dies eingestellt ist, zeigen Sie den Namen an, ansonsten zeigen Sie den Standard an. – Daniel

0

Ich glaube, was Sie wollen, ist dies:

<input name="field" value="{{ old('field', isset($model->field) ? $model->field : '') }}"/> 

Hier ist die Aufteilung:

  • Wenn sie bearbeitet/gespeichert (zum ersten Mal), um die Form und die ausgefallenen retten, aber war back()->withErrors(), diese Wert wird verwendet.
  • Wenn sie nur die Ansicht "Bearbeiten" ohne Änderungen aufgerufen haben, wird $model->field verwendet.
  • Wenn sie das Modell erstellen, aber noch keine Sicherung versucht haben, wird kein Wert verwendet.()

Dies sollte alle Szenarien abdecken.

0

Aus meiner Erfahrung ist es normalerweise besser, Ansichten nicht zwischen Erstellungs-/Bearbeitungsoperationen zu teilen. Sie stoßen auf viele bedingte Logik, die vermieden werden kann, und Sie erhalten eine sauberere Benutzererfahrung beim Anzeigen von Formularfehlern und dergleichen.

Soweit ich einen Standardwert für die Erstellung anzeigen, verwende ich die Hilfsmethode old('attribute', 'Default Value'), um dies zu erreichen.