2016-04-07 17 views
0

新しいレコードのデータの入力や既存のレコードの編集に使用されるフォームを作成したいと思います。Laravelでのフォーム入力値

フォーム入力のvalue属性を、空白または既存のレコードの値、新しいものを作成している場合や編集している場合、または入力がユーザーによって入力された場合、検証に失敗した場合、その値を定義する方法を教えてください。

私の現在の解決策は、編集中のモデルのインスタンスにold()を組み合わせることです。例として、ユーザーのデータを編集する形式では、ユーザー名のinput要素の値はold('name', !empty($user) ? $user->name : '')のようになります。

これは、このようなことを行う正しい方法ですか、もっと簡単な(より職人的な)方法ですか?

私はLaravel 5.2を使用しています。

ありがとうございます。

答えて

2

フォームモデルバインドと部分データを使用する必要があります。
まず、create.blade.phpedit.blade.php_form.blade.phpの3つのファイルを作成します。

{!! Form::label('title', 'Title:') !!} 
{!! Form::text('title', old('title')) !!} 

create.blade.php

{!! Form::open(['route' => 'someroute']) !!} 
@include('_form.blade.php') 
{!! Form::submit('Create') !!} 
{!! Form::close() !!} 

edit.blade.php

{!! Form::model($model, ['route' => 'someroute']) !!} 
@include('_form.blade.php') 
{!! Form::submit('Save Changes') !!} 
{!! Form::close() !!} 

ここでそれについての詳細を読む:そのような_form.blade.php書き込み何かでhttps://laravelcollective.com/docs/5.2/html#form-model-binding

解説更新:
フォームモデルバインディングでは、モデルが持つすべての属性がフォームフィールドに配置されます。例えば、モデルにはtitleというフィールドがありますので、Form::model($model)のようなフォームを開いてForm::text('title')フィールドを入力すると、プラグインによって自動入力されます。

3

Laravel 5の更新フォームを使用するためのオプションがいくつかあります。私の意見をよりきれいにするため、HTML/Form helper library from Laravel Collectiveを使用することをお勧めします。それはよく文書化されており、あなたのビューにロジックを追加することなくデフォルト値を処理する、そのままの状態でform-model bindingを提供します。 Composer( "laravelcollective/html": "5.2。*")を介してライブラリを追加し、config/app.phpにサービスプロバイダとエイリアスを追加してください。以前はLaravel 4に付属していたHTMLヘルパーが、Laravel 5がリリースされたときに外部ライブラリに移動しました。

余分なライブラリを避けたい場合は、this post in the Laracast forumに、事前入力フィールドを含む更新フォームの完全な例があります。

クリーン、読書や貢献のために簡単:

1

は、フォームとローカリゼーションで、私は私が行っているすべてのプロジェクトでは3つのパッケージを使用しています。

0

それとも...代わりに三元にビュー内のすべての時間を持つ、あなたはちょうどあなたが編集ビューで使用している同じ変数は、ビューを作成するために利用できるようにすることを可能にし、そしてちょうど空にその変数を割り当てることができますオブジェクトの各プロパティが空の値を持つことを可能にするモデルのインスタンス。これは、ビューではなくコントローラで実行されます。

ので、代わりにあなただけ行うことができます:で部分形式で

old('name', $user->name) 

を編集として

public function create() 
{ 
    $user = New User; 
    return view('add_user')->with('user', $user); 
} 

をあなただけかもしれないそのように

public function edit($id) 
{ 
    $user = User::find($id); (or auth session id or whatever) 
    return view('edit_user')->with('user', $user); 
} 

のようなものかもしれません作成ビューに空の文字列として表示し、実際のDAを示すことになるデフォルト、などする$ user->名前taを編集ビューに表示します。

関連する問題