2017-08-16 3 views
-1

私はDBからユーザーの詳細を持っており、編集用のボタン付きブレードループを使用して印刷します。今私が欲しいのは、ボタンをクリックすると、ユーザーのためにクリックされたボタンのユーザーの詳細が必要です。Laravelユーザー編集

私のコントローラには、<input type="hidden" value="{{$user->email}}" name="email"> という隠れた入力フィールドがありました。しかし、私は最後のユーザーだけになっています。

<div class="content-wrapper"> 
    <div class="flex-center position-ref full-height"> 
     <form action="{!!url('/delete')!!}" method="post"> {!!csrf_field()!!} 
      <div class="table-responsive"> 
       <table class="table table-hover"> 
        <thead> 
         <tr> 
         <th>ID</th> 
         <th>Name</th> 
         <th>Email</th> 
         <th>Role</th> 
         </tr> 
        </thead> 
        <tbody> 
        @foreach($users as $user) 
         <tr> 
         <td>{{$user->id}}</td> 
         <td>{{$user->name}}</td> 
         <td>{{$user->email}}</td> <input type="hidden" value="{{$user->email}}" name="email"> 
         <td>{{$user->role}}</td> 
         <td> 
          <div class="btn-group"> 
           <button type="submit" class="btn btn-primary btn-sm" name="edit" >Edit</button> 
           <button type="submit" class="btn btn-primary btn-sm" name="delete" >Delete</button> 
           <button type="submit" class="btn btn-primary btn-sm" name="make" >Make Admin</button> 
          </div> 
         </td> 
         </tr> 
        @endforeach 
       </tbody> 
       </table> 
      </div> 
     </form>  
    </div> 
</div> 
+0

put controller code –

答えて

0

あなたが編集ボタンをクリックしたときに、ユーザーの詳細をページを編集するために行きたいと仮定。

<a href="{{ route('your_route_name',$user->id) }}" class="test-btn btn btn-primary btn-sm">Edit</a> 
0

私はあなたがすべてのユーザーの隠しフィールドに同じ名前「電子メール」を使用しているので、それはだと思う..私はあなたが理解を願って、以下を参照してください。フォームは同じなので、オーバーライドされています。
ループ内にformタグを追加して、テーブルの前にあるタグを削除してください。

@foreach($users as $user) 
    <form action="{!!url('/delete')!!}" method="post"> {!!csrf_field()!!} 
     <tr> 
     <td>{{$user->id}}</td> 
     <td>{{$user->name}}</td> 
     <td>{{$user->email}}</td> <input type="hidden" value="{{$user->email}}" name="email"> 
     <td>{{$user->role}}</td> 
     <td> 
      <div class="btn-group"> 
       <button type="submit" class="btn btn-primary btn-sm" name="edit" >Edit</button> 
       <button type="submit" class="btn btn-primary btn-sm" name="delete" >Delete</button> 
       <button type="submit" class="btn btn-primary btn-sm" name="make" >Make Admin</button> 
     </div> 
     </td> 
     </tr> 
    </form> 
@endforeach 

それとも、あなたはループの外で単一の隠れた電子メールフィールドを入れて、それを提出する前に、JSを使用して値です割り当てることができます。

手順1:ボタンにデータ属性(data-email)を追加してメールを受信します。また、クリックイベントをキャプチャする共通のクラス名を追加します。

<button type="button" class="test-btn btn btn-primary btn-sm" name="edit" data-email="{{$user->email}}" >Edit</button> 
<button type="button" class="test-btn btn btn-primary btn-sm" name="delete" data-email="{{$user->email}}" >Delete</button> 
<button type="button" class="test-btn btn btn-primary btn-sm" name="make" data-email="{{$user->email}}" >Make Admin</button> 

ステップ2(JS部分を参照):ブランク値とループ外email隠しフィールドを移動します。

<form action="{!!url('/delete')!!}" method="post" id="test-form"> {!!csrf_field()!!} 
<input type="hidden" value="" name="email" id="email"> 

ステップ3:JSを追加してボタンのクリックイベントをキャプチャし、クリックしたボタンの電子メールの値を電子メールテキストフィールドに割り当てます。

$(".test-btn ").on("click",function(e){ 
    //assign the email value from button to variable 
    email = $(this).attr(data-email); 

    //assign the email value to email hidden field 
    $("#email").value(email); 

    //submit the form 
    $("#test-form").submit(); 
}); 
関連する問題