2013-10-30 23 views
7

Hallo, ich bin derzeit mit Formen Laravel 4 arbeiten. Ich habe Schwierigkeiten, eine Texteingabe mit einer bestimmten Klasse zu generieren, ohne einen 'Standardwert' zu wählen. Ich möchte folgendes tun:Laravel 4 Form Texteingabe

{{ Form::text('first_name', array('class' => 'first_name')) }} 

Jedoch habe ich diesen Fehler (htmlentities() expects parameter 1 to be string, array given.), Es sei denn ich einen Standardwert hinzu:

{{ Form::text('first_name', 'Some Value', array('class' => 'first_name')) }} 

Der Standardwert füllt dann das Feld und muss vor gelöscht werden einen neuen Wert eingeben. So kann es nicht einmal als Platzhalter verwendet werden.

Vielen Dank im Voraus,

Dan

+0

Einfache Lösung: geben Sie einen Standardwert von nichts "" ". – Mike

+0

Vielen Dank Mike, der gearbeitet hat. – Liondedan

Antwort

20

Anstelle eines Wertes, Versorgung null. (Do keine Versorgungs leere Zeichenkette "")

Diese in der Zukunft nützlich sein werden, wenn Sie mit Formular Modell Binding (http://laravel.com/docs/html#form-model-binding) gehen arbeiten, weil null dem Wert des vorliegenden Modell Attributs geben.

+1

Danke Rob - nie dazu gekommen, zu sagen, dass dies das Problem behoben :) – Liondedan

6

Sie können einen leeren Wert übergeben "" wie

{{ Form::text('first_name', '', array('class' => 'first_name')) }} 

Weil HTML Form Builder des Laravel 4 API erste Parameter als name, zweiten Parameter als value akzeptieren wird, die null standardmäßig ist und der dritten Parameter als options array die eine ist, empty array standardmäßig.

Also im Grunde können Sie Texteingabe nur, indem man bauen wie Name,

{{ Form::text('first_name') }} 

Und wenn Sie planen, Optionen zu übergeben, die das dritte Argument ist, müssen Sie auch zweites Argument übergeben.

Siehe API Doc hier http://laravel.com/api/source-class-Illuminate.Html.FormBuilder.html#235-246

-2

Ich fand es besser, die Input::old('first_name') für Ihren Standardwert zu verwenden, anstatt nur „“, wie:

{{ Form::text('first_name', Input::old('first_name')) }}

Auf diese Weise, wenn Sie gehen zurück die Form mit ungültigen Daten und die Formulareingabe übergibt, es wird den alten Eingang nachladen, dass der Benutzer vorher eingegeben. In diesem Fall first_name wird/kann das first_name Feld in Ihrer Datenbank-Tabelle als auch gebunden sein.

Edit: Ja, die dritte Option ist ein Array von Eingabemöglichkeiten, wie zum Beispiel Textfeld-ID, Größe usw. oder jedes anderes HTML-Attribut.

Keenan :)