2017-08-07 17 views
1

注:設定のデフォルト値

の回答(複数可)以下の2009年のレガシーブラウザの状態が今、あなたは実際にはJavaScriptを経由してファイル入力要素の値を設定することができます反映2017年

は、詳細については、この問題の答えだけでなく、デモを参照してください:
How to set file input value programatically (i.e.: when drag-dropping files)?

私はこの質問が重複している知っているが、私は多分考えるsomeo私を助けることができます。

まず問題をお聞かせください。

私はいくつかのフィールドに更新するためのフォームがあります:名前、順序、公共、pathheaderとpathhomeをし、私の質問はこれです:

それはでクリックせずpathheaderとpathhomeで同じ値で、フォームを更新することが可能です入力タイプのファイルを再度ですか?

入力タイプのファイルは、ここでは次のようになります。私は、ビューをレンダリングするとき、あなたがいない場合

@if (Storage::disk('projects')->has($project->slug)) 
    <img src="{{ asset('/storage/projects/'.$project->slug.'/header.png') }}" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;"> 
@else 
    <img src="" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;"> 
@endif 
<input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp" style="display:none;"> 

だから、それは、私はそれがサーバーにそれを見つけて、もう一度それをクリックすることは現実的ではないだと思っ画像を示しますそれを変更したい。

私はあなたの意見を教えてください。もし誰かがそれをやる方法を知っていれば、私は感謝します。いくつかのライブラリや他の機能でそれを行う方法を知っていれば(私はそれを知っているよう

おかげで多くのことを

を解決し

簡単な方法:コントローラでは必要ありませんデータを作る

。関数の内部

public function updateProject(Request $request, $id) 
{ 
    $this->validate($request, array(
     'slug'=> 'required', 
     'order'=> 'required', 
     'public'=> 'required' 
    )); 
    $project = Project::find($id); 
    $project->slug = $request->input('slug'); 
    $project->order = $request->input('order'); 
    $project->public = $request->input('public'); 
    if ($request->hasFile('pathheader')){ 
     $project->pathheader = $request->file('pathheader'); 
     \Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.png'); 
    } 
    if ($request->hasFile('pathhome')){ 
     $project->pathhome = $request->file('pathhome'); 
     \Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.png'); 

    } 
    $project->save(); 
    return redirect()->route('admin.projects.show', $project->id); 
} 
+0

私はあなたがすでにこれを見ている願っています:https://stackoverflow.com/q/1696877/5894241をあなたは、フォームを更新することはできません – Nisarg

+0

。データベースで__record__を更新します。いくつかのフィールドの値が__not提供されていれば_ - このフィールドを更新する必要はありません。 –

+0

こんにちは@NisargShah最初にあなたの高速回答に感謝、私はすでにこれを見た。そして、JSを使ってファイルのインスタント自動アップロードを行うのがより良い方法かもしれません。あなたはどう思いますか?それは最善の方法ですか? –

答えて

2

によりブラウザのセキュリティには、あなただけのファイルにデフォルト値を置くことができません入力。

より良い方法は、ユーザーがレコードを更新する前にファイルを選択したかどうかを確認することです。だからあなたの更新機能に

public function update(){ 
    // Make sure you didn't required the user to select file. 
    $attribute = [ 
     'name' => $request->name, 
     'order' => $request->order 
    ] 
    if($request->hasFile('pathheader')){ 
     //If user select a file, upload the file 
     //Then you should update your record by 
     //adding fields to your update attribute. 
     $attribute['pathheader'] => $pathheader; 

    } 
    //otherwise, no changes will happen to your 'pathheader' column. 
    DB::table('yourtable')->where('id',$id)->update($attribute); 
} 
+0

ありがとう@RomnickSusa私はいつもより難しくしています。簡単な方法はあなたのものです、私は確信しています。それは成功しました。私はコントローラーの新しい機能で自分の質問を編集します。チェックすることができますし、もっと効率的だと思うのであればコメントを入力するだけです。とにかく、あなたの答えをありがとう:) –

+0

さて、あなたの質問を更新し、病気の私の答えを更新します。コントローラのコードを提供する方が良いでしょう。 –

+0

質問が更新されました –

関連する問題