Проблема с методом удаления http в firefox и laravel

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

@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.

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


person Kezern    schedule 29.09.2018    source источник
comment
Шаблоны блейдов обрабатываются на стороне сервера, поэтому невозможно, чтобы ваш браузер имел какое-либо значение, когда дело доходит до рендеринга. Это должно быть что-то другое.   -  person Namoshek    schedule 29.09.2018
comment
как указал @Namoshek, шаблоны блейдов отображаются на стороне сервера. Вы можете проверить визуализированную чистую HTML-страницу на вкладке Firefox «Проверка элементов». лезвий больше нет.   -  person Tharaka Dilshan    schedule 29.09.2018


Ответы (2)


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

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

person eamirgh    schedule 29.09.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, когда я нажимаю кнопку удаления. Кажется, он делает запрос на получение... Я не понимаю этого, потому что я указал метод POST... введите здесь описание изображения

person Kezern    schedule 29.09.2018
comment
во вкладке сети посмотрите, что происходит при нажатии кнопки "Элиминар". и дайте нам знать. что такое request_url, request_method и т. д. - person Tharaka Dilshan; 29.09.2018
comment
Пожалуйста, отредактируйте свой вопрос в будущем, если вы хотите добавить дополнительную информацию. Ответ не подходит для предоставления дополнительной информации. - person Namoshek; 29.09.2018