Не могу удалить запись, которую хочу, только первую - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь удалить запись.Все, кажется, все в порядке, однако, я не могу удалить нужную запись, только первую.

Код для просмотра:

    <table class="table">
      <thead class="thead-light">
        <tr>
          <th>ID</th>
          <th>Inscrito en</th>
          <th>Cambios</th>
       </tr>
      </thead>
      <tbody>
        @if (!empty($escuelausuarios))
          @foreach($escuelausuarios as $escuelausuario)
            <tr>
              <td> {{ $escuelausuario->idEscuelaUsuario }} </td>
              <td> {{ $escuelausuario->escuela->strNombreEscuela }} </td>
              <td>


                <button class="btn btn-sm btn-outline-secondary" id="delete{{ $escuelausuario->idEscuelaUsuario }}"

                onclick="
                  var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
                    if (resultdelete)
                    {
                      event.preventDefault();
                      document.getElementById('delete-horario-form').submit();
                    }
                "


                >-</button>
                  <form id="delete-horario-form" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}"
                    method="POST" style="display: none;">
                      <input type="hidden" name="_method" value="delete">
                      {{ csrf_field() }}
                  </form>                 

              </td>
            </tr>

          @endforeach
        @endif

      </tbody>
    </table>

Контроллер всегда получаеттот же идентификатор, поэтому удаляемая запись всегда одна и та же, первая.

public function destroy($idEscuelaUsuario)
{
    //
    dd($idEscuelaUsuario);
    $escuelaUsuario = EscuelaUsuario::find($idEscuelaUsuario);
    //dd($escuelaUsuario);
    if($escuelaUsuario->delete())
    {
        return back()->withInput()->with('success','Escuela desvinculada del usuario exitosamente');
        //return redirect()->route('usuarios.index')->with('success','Escuela desvinculada del usuario exitosamente');
    }
    return back()->withInput()->with('error','La escuela no pudo desvuncularse');

}

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

Пожалуйста, помогите, у меня нет представления о том, что происходит.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Проблема:

Все скрытые формы имеют одинаковый идентификатор ("delete-horario-form").При нажатии на кнопку «Удалить» будет отправлена ​​форма с идентификатором "delete-horario-form".Но в вашем коде все идентификаторы одинаковы, поэтому он отправит только первый.

Решение:

Вы сделали идентификатор кнопки динамическим id="delete{{ $escuelausuario->idEscuelaUsuario }}", что не является необходимым.Идентификатор кнопки здесь не имеет никакого значения, но идентификатор формы делает.Делая идентификатор формы динамическим, как кнопка, это решит вашу проблему.

<table class="table">
      <thead class="thead-light">
        <tr>
          <th>ID</th>
          <th>Inscrito en</th>
          <th>Cambios</th>
       </tr>
      </thead>
      <tbody>
        @if (!empty($escuelausuarios))
          @foreach($escuelausuarios as $escuelausuario)
            <tr>
              <td> {{ $escuelausuario->idEscuelaUsuario }} </td>
              <td> {{ $escuelausuario->escuela->strNombreEscuela }} </td>
              <td>
                <button class="btn btn-sm btn-outline-secondary" 
                onclick="var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
                if (resultdelete)
                {
                     event.preventDefault();
                     document.getElementById("delete{{ $escuelausuario->idEscuelaUsuario }}").submit();
                }"


                >-</button>
                  <form id="delete{{ $escuelausuario->idEscuelaUsuario }}" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}"
                    method="POST" style="display: none;">
                      <input type="hidden" name="_method" value="delete">
                      {{ csrf_field() }}
                  </form>                 

              </td>
            </tr>

          @endforeach
        @endif

      </tbody>
    </table>
0 голосов
/ 02 октября 2018

Если вы используете атрибут ID в цикле foreach, убедитесь, что в строке есть разные идентификаторы

Если вы используете document.getElementByID Он всегда будет искать первое вхождение этого ID

<button class="btn btn-sm btn-outline-secondary" id="delete{{ $escuelausuario->idEscuelaUsuario }}" onclick="
              var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
                if (resultdelete)
                {
                  event.preventDefault();
                  document.getElementById('delete-horario-form{{ $escuelausuario->idEscuelaUsuario }}').submit();
                }
">-</button>

<form id="delete-horario-form{{ $escuelausuario->idEscuelaUsuario }}" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}" method="POST" style="display: none;">
   <input type="hidden" name="_method" value="delete">
   {{ csrf_field() }}
</form> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...