2016-09-01 3 views
0

ユーザーの作成と編集の両方でフォームモデルバインドと同じビュー部分を使用しています。Laravel5:フォームモデルバインディング - 新しいレコードを作成するときに問題を引き起こすラジオボタンの自動選択

Editにdb値に基づいてラジオボタンを自動選択しようとしているときに、 正しい項目がデフォルトで選択されています。これが期待される結果です。しかし、同じフォーム部分を使用して新しいユーザーを作成しようとすると、$user変数を作成メソッドに渡さなかったため、エラーUndefined variable: userが返されます。これは不要です。これをどうやって解決するのですか?

コントローラの方法:

public function create() 
    { 
     return view('backend/users/create'); 
    } 
public function edit(User $user) 
    return view('backend/users/edit', compact('user')); 
} 

フォームのラジオボタン:あなたがメソッドを作成$user VaRの中を持っていないためです

{{ Form::radio('level', 1, $user, []) }} 
{{ Form::radio('level', 2, $user, []) }} 
{{ Form::radio('level', 3, $user, []) }} 

答えて

1

はので、このようにしてみてください:

{!! Form::radio('level', 1, isset($user) ? $user : null, []) !!} 
{!! Form::radio('level', 2, isset($user) ? $user : null, []) !!} 
{!! Form::radio('level', 3, isset($user) ? $user : null, []) !!} 

またを{!! !!}に入れました。{{ }}htmlentitiesですべてのhtmlタグをエスケープするためです。

これはまだ良くありません。モデルを渡す場合は、すべてのフォームをモデルのデータとバインドしたいと思うので、

@if(isset($user)) 
    {!! Form::model($user, [...]) !!} 
@else 
    {!! Form::open([...]) !!} 
@endif 
のようにフォームに $userをバインドする必要があります。
関連する問題