Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao salvar os episódios assistidos

Boa tarde

Estou tendo alguns problemas ao salvar os determinados episódios assistidos. No navegador está aparecendo a seguinte mensagem de erro:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException thrown with message "The POST method is not supported for this route. Supported methods: GET, HEAD."

Arquivo index.blade.php do episódios:

@extends('layout')

@section('cabecalho')
    Episódios
@endsection

@section('conteudo')
    @include('mensagem', ['mensagem' => $mensagem])
    <form href="/temporadas/{{ $temporadaId }}/episodios/assistir" method="post">
        @csrf
        <ul class="list-group">
            @foreach ($episodios as $episodio)
                <li class="list-group-item d-flex justify-content-between align-items-center">
                    Episódio {{ $episodio->numero_episodio }}

                    <input type="checkbox" name="episodio[{{ $episodio->id }}][assistido]"
                        {{ $episodio->assistido ? 'checked' : '' }}>
                </li>
            @endforeach
        </ul>
        <button class="btn btn-primary mt-2 mb-2">Salvar</button>
    </form>
@endsection

Classe EpisodiosController:

<?php

namespace App\Http\Controllers;

use App\Episodio;
use App\Temporada;
use Illuminate\Http\Request;

class EpisodiosController extends Controller
{
    public function index(Temporada $temporada, Request $request)
    {
        $episodios = $temporada->episodios;
        $temporadaId = $temporada->id;
        $mensagem = $request->session()->get('mensagem');

        return view('episodios.index', compact('episodios', 'temporadaId', 'mensagem'));
    }

    public function assistir(Temporada $temporada, Request $request)
    {
        $idsEpisodiosAssistidos = array_keys($request->episodios);
        $temporada->episodios->each(function (Episodio $episodio) use ($idsEpisodiosAssistidos) {
            $episodio->assistido = in_array(
                $episodio->id,
                $idsEpisodiosAssistidos
            );
        });
        $temporada->push();

        $request->session()->flash('mensagem', 'Episódios marcados como assistidos');

        return redirect()->back();
    }
}

O que poderia estar ocasionando este erro?

2 respostas

Arquivo da rota:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/series', 'SeriesController@index')
    ->name('listar_series');
Route::get('/series/criar', 'SeriesController@create')
    ->name('form_criar_serie');
Route::post('/series/criar', 'SeriesController@store');
Route::delete('/series/{id}', 'SeriesController@destroy');
Route::post('/series/{id}/editaNome', 'SeriesController@editaNome');

Route::get('/series/{serieID}/temporadas', 'TemporadasController@index');

Route::get('/temporadas/{temporada}/episodios', 'EpisodiosController@index');
Route::post('/temporadas/{temporada}/episodios/assistir', 'EpisodiosController@assistir');
solução!

Já resolvi o erro. Na tag 'form', ao invés de colocar 'action' eu coloquei 'href'.