2015-11-02 3 views
2

Мой метод обновления работает, к сожалению, он всегда обновляет неверные данные, в этом случае он всегда обновляет последние данные в моем списке db. Я считаю, что это происходит потому, что мой модальный прямоугольник направляет $ user-> id, который всегда указывает на последний id, поскольку у меня есть цикл for, используемый наверху, есть ли способы, которые я мог бы сделать, чтобы указать его на выбранный идентификатор?Метод обновления laravel с использованием модальной коробки

view.blade.php

<div class="well col-xs-9 col-sm-9 col-md-9 col-lg-9 col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1"> 
    @foreach ($users as $user) 
    <div class="row user-row"> 
    <!--div class="col-xs-3 col-sm-2 col-md-1 col-lg-1"> 
     <img class="img-circle" 
      src="https://lh5.googleusercontent.com/-b0-k99FZlyE/AAAAAAAAAAI/AAAAAAAAAAA/eu7opA4byxI/photo.jpg?sz=50" 
      alt="User Pic"> 
     </div--> 
     <div class="col-xs-2 col-sm-3 col-md-4 col-lg-4"> 
      <h5 style="font-weight: bold">{{ $user->name }}</h5> 
     </div> 
     <div class="col-xs-8 col-sm-8 col-md-8 col-lg-8 dropdown-user" data-for=".{{ $user->id }}"> 
      <h5 class="glyphicon glyphicon-chevron-down text-muted pull-right">&nbsp;</h5> 
     </div> 
    </div> 
    <div class="row user-infos {{ $user->id }}"> 
     <div class="col-xs-12 col-sm-12 col-md-10 col-lg-10 col-xs-offset-0 col-sm-offset-0 col-md-offset-1 col-lg-offset-1"> 
     <div class="panel panel-info"> 
      <div class="panel-heading"> 
       <h2 class="panel-title">User Information</h2> 
      </div> 
      <div class="panel-body"> 
       <div class="row"> 
       <div class=" col-md-10 col-lg-10 hidden-xs hidden-sm"> 
        <div class="col-xs-5">User level:</div><div class="col-xs-5"> {{ $user->role->role_description }}</div> 
        <div class="col-xs-5">Email:</div> <div class="col-xs-5"> {{ $user->email }}</div> 
        <div class="col-xs-5">Phone number: </div> <div class="col-xs-5"> {{ $user->mobile }} </div> 
        <div class="col-xs-5">Office extension: </div> <div class="col-xs-5"> [ TO IMPLEMENT ]</div> 
       </div> 
      </div> 
     </div> 
     <div class="panel-footer"> 
      <button class="btn btn-sm btn-warning" type="button" 
      data-toggle="modal" data-target="#form">Edit&nbsp;<i class="glyphicon glyphicon-edit"></i></button> 
      <span class="pull-right"> 
      <button class="btn btn-sm btn-danger" type="button">Inactive&nbsp;<i class="glyphicon glyphicon-remove"></i></button> 
     </span> 
    </div> 
</div> 
</div> 
</div> 
@endforeach    
</div> 

@if(Session::has('flash_message')) 
    <div class="alert alert-success col-xs-9 col-sm-9 col-md-9 col-lg-9 col-xs-offset-1 col-sm-offset-1 col-md-offset-1 col-lg-offset-1"> 
     {{ Session::get('flash_message') }} 
    </div> 
@endif 

<div class="col-sm-offset-1 col-sm-2"> 

    <!-- Trigger the modal with a button --> 
    <button type="button" class="btn btn-info btn-md" data-toggle="modal" data-target="#form">Register New User</button> 

    <!-- Modal --> 
    <div id="form" class="modal fade" role="dialog"> 
     <div class="modal-dialog"> 

      <!-- Modal content--> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal">&times;</button> 
        <h4 class="modal-title">User Information</h4> 
       </div> 
       <div class="modal-body"> 
        <form class="form-horizontal" role="form" action="/manage_accounts/{{ $user->id }}" novalidate> 
        <input type="hidden" name="_method" value="PUT"> 
        <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
        <div class="form-group"> 
        <label class="control-label col-sm-3" for="name">Username:</label> 
        <div class="col-sm-5 @if ($errors->has('name')) has-error @endif"> 
         <input type="text" class="form-control" type="hidden" id="name" name="name" placeholder="Enter username"> 
         @if ($errors->has('name')) <p class="help-block">{{ $errors->first('name') }}</p> @endif 
        </div> 
       </div> 

... 

ответ

0

Так вот как я получил свой метод обновления для работы.

<form class="form-horizontal" role="form" method="POST" action="/manage_accounts/" novalidate> 
      <input type="hidden" name="_method" value="PUT"> 

Javascript:

<script type="text/javascript"> 
$(function() { 

    $('.btn--edit').on('click', function(e) { 
    var userId = $(this).attr('data-for'); 
    var formAction = "/manage_accounts/" + userId; 

    $('.form-horizontal').attr('action', formAction); 
    }); 
</script> 

Модальная кнопка с именем класса .btn - редактировать,

<button class="btn btn-sm btn-warning btn--edit" type="button" 
      data-toggle="modal" data-target="#update" data-for="{{$user->id}}">Edit&nbsp;<i class="glyphicon glyphicon-edit"></i></button> 
1

Ваш модальный ссылается объект $ пользователя, но он находится за пределами вашего цикла Еогеасп.

Конкретно эта линия:

<form class="form-horizontal" role="form" action="/manage_accounts/{{ $user->id }}" novalidate> 

Вы можете зарегистрировать событие OnClick для всплывающей кнопки модальной, который захватывает скрытое поле ввода идентификатора пользователя и динамически обновляет URL действия. Кроме того, вы можете просто указать URL-адрес действия и обработать логическую сторону сервера. Этот подход будет иметь скрытое поле ввода для идентификатора пользователя, которое вы будете обновлять, но гораздо более чистым, чем с структурой URL.

Edit:

Javascript Пример:

<script type="text-javascript"> 
        $(function() { 
         $('.btn--edit').on('click', function() { 
         var formAction = $('.form-horizontal').attr('action').replace(/(?!.*/).*, ''); 
         var userId = $(this).closest('[name=user_id]').val(); 
         $('.form-horizontal').attr('action', formAction + '/' + userId); 
         }); 
        }); 
        </script> 

Это требует, чтобы обновить модальный кнопку с именем класса .btn - редактировать

<button class="btn btn-sm btn-warning btn--edit" type="button" data-toggle="modal" data-target="#form">Edit&nbsp;<i class="glyphicon glyphicon-edit"></i></button> 

Это также требует добавления где-то скрытый вход внутри foreach. Я выбрал после класса user-infos.

<input type="hidden" name="user_id" value="{{ $user->id }}" /> 
+0

Да, я знаю, что проблема, но я на самом деле совершенно новый в этом. Извините, но вы были бы любезны, чтобы показать грубое решение о том, как это сделать? – EunJi

+0

Обновленный исходный комментарий. –

Смежные вопросы