Проблема с удалением http-метода в Firefox и Laravel - PullRequest
0 голосов
/ 29 сентября 2018

Привет, у меня есть проблема в Laravel.У меня есть проект в Laravel, и у меня проблемы с Firefox.В Chrome все работает нормально.У меня есть это представление администратора

@foreach ($messages as $message)
    <tr>
      <td>
      <a href="{{ route('messages.show', $message->id) }}">
        {{ $message->id }}
      </a>
      </td>
      <td>{{ $message->nombre }}</td>
      <td>{{ $message->email }}</td>
      <td>{{ $message->mensaje }}</td>
      <td>
        <a class="btn btn-primary" href="{{ route('messages.edit',$message->id) }}">Editar</a>

        <form style="display:inline" action="{{ route('messages.destroy', $message->id)}} " method="post">
          {!! csrf_field() !!}
          {!! method_field('DELETE') !!}
          <button type="submit" class="btn btn-danger" name="button">Eliminar</button>
        </form>
      </td>
    </tr>

  @endforeach

У меня есть таблица с двумя кнопками, вторая кнопка представляет собой форму для удаления сообщения.O добавили method_field ('DELETE')

Вот мои маршруты.

Route::get('mensajes', 'MessagesController@index')->name('messages.index');
Route::get('mensajes/create', 'MessagesController@create')->name('messages.create');
Route::post('mensajes', 'MessagesController@store')->name('messages.store');
Route::get('mensajes/{id}', 'MessagesController@show')->name('messages.show');
Route::get('mensajes/{id}/edit', 'MessagesController@edit')->name('messages.edit');
Route::put('mensajes/{id}', 'MessagesController@update')->name('messages.update');
Route::delete('mensajes/{id}', 'MessagesController@destroy')->name('messages.destroy');

А вот здесь метод уничтожения MessagesController

public function destroy($id)
{
    //borro el mensaje
    //DB::table('messages')->where('id', $id)->delete();
    Message::findOrFail($id)->delete();

    //redirecciono
    return redirect()->route('messages.index');
}

В Chrome все работает нормально исообщение удаленоНо в Firefox он перенаправляет на / mensajes / {id} маршрут и сообщение показано на рисунке.Кажется в Firefox {!!method_field ('DELETE') !!} не работает.Кто-нибудь знает, что я делаю неправильно?

Если я попытаюсь очистить, как предложено, я получу это сообщение

Route cache cleared!

LogicException  : Unable to prepare route [api/user] for serialization. Uses Closure.



at C:\laragon\www\laraweb\vendor\laravel\framework\src\Illuminate\Routing\Route.php:880
    876|      */
    877|     public function prepareForSerialization()
    878|     {
    879|         if ($this->action['uses'] instanceof Closure) {
  > 880|             throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
    881|         }
    882|
    883|         $this->compileRoute();
    884|

  Exception trace:

  1   Illuminate\Routing\Route::prepareForSerialization()
      C:\laragon\www\laraweb\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62

  2   Illuminate\Foundation\Console\RouteCacheCommand::handle()
      C:\laragon\www\laraweb\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:29

  Please use the argument -v to see more details.

С наилучшими пожеланиями.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Поскольку в вашем коде нет проблем, просто запустите эти команды:

php artisan cache:clear php artisan route:cache php artisan config:cache

0 голосов
/ 29 сентября 2018

Это то, как html-форма отображается в Firefox.Я думаю, что код в порядке, не так ли?

<form style="display:inline" action="http://laraweb.test/mensajes/9 " method="post">
          <input name="_token" value="R88rPYL6WJgEDwQizUiJnzMWwptSWyJmgakGrdZC" type="hidden">
          <input name="_method" value="DELETE" type="hidden">
          <button type="submit" class="btn btn-danger" name="button">Eliminar</button>
        </form>

Вот снимок экрана с вкладкой сети в Firefox, когда я нажимаю кнопку удаления.Кажется, он делает запрос get ... Я не понимаю, потому что я указал метод POST ... enter image description here

...