Laravel用户编辑

时间:2017-08-16 09:19:34

标签: php laravel laravel-blade

我有来自数据库的用户详细信息,并使用刀片循环打印并带有编辑按钮。现在我想,如果我点击按钮,我需要点击用户按钮的用户详细信息。

我尝试使用隐藏的输入字段<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>  

2 个答案:

答案 0 :(得分:0)

我认为这是因为你使用相同的名字&#34;电子邮件&#34;适用于所有用户的隐藏字段。由于形式相同,它被覆盖了。
相反,在循环中添加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)添加到按钮以获取电子邮件。还要添加一个公共类名来捕获click事件。 (见JS部分)

<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:将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();
});

答案 1 :(得分:0)

假设您在单击编辑按钮时想要使用用户的详细信息编辑页面。

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