Olá pessoal,
Ao enviar o post para o editaNome estou recebendo o status 419 de retorno. O que estou fazendo errado?
index.blade.php
@extends('layout')
@section('cabecalho')
Séries
@endsection
@section('conteudo')
@if(!empty($mensagem))
<div class="alert alert-success">
{{$mensagem}}
</div>
@endif
<a href="{{ route ('form_criar_serie') }}" class="btn btn-dark mb-2">Adicionar</a>
<ul class="list-group">
@foreach ($series as $serie)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span id="nome-serie-{{ $serie->id }}">{{ $serie->nome }}</span>
<div class="input-group w-50" hidden id="input-nome-serie-{{ $serie->id }}">
<input type="text" class="form-control" value="{{ $serie->nome }}">
<div class="input-group-append">
<button class="btn btn-primary" onclick="editarSerie({{ $serie->id }})">
<i class="fas fa-check"></i>
</button>
@csrf
</div>
</div>
<span class="d-flex">
<button class="btn btn-info btn-sm mr-1" onclick="toggleInput({{ $serie->id }})">
<i class="far fa-edit"></i>
</button>
<a href="/series/{{$serie->id}}/temporadas" class="btn btn-info btn-sm mr-1">
<i class="fas fa-external-link-alt"></i>
</a>
<form method="post" action="/series/remover/{{ $serie->id}}" onsubmit="return confirm('Tem certeza que deseja remover {{ addslashes( $serie->nome )}}?')">
@csrf
@method('DELETE')
<button class="btn btn-danger btn-sm">
<i class="far fa-trash-alt"></i>
</button>
</form>
</span>
</li>
@endforeach
</ul>
<script>
function toggleInput(serieId) {
const nomeSerieEl = document.getElementById(`nome-serie-${serieId}`);
const inputSerieEl = document.getElementById(`input-nome-serie-${serieId}`);
if (nomeSerieEl.hasAttribute('hidden')) {
nomeSerieEl.removeAttribute('hidden');
inputSerieEl.hidden = true;
} else {
inputSerieEl.removeAttribute('hidden');
nomeSerieEl.hidden = true;
}
}
function editarSerie(serieId) {
let formData = new FormData();
const nome = document
.querySelector(`#input-nome-serie-${serieId} > input`)
.value;
const token = document
.querySelector(`input[name="_token"]`)
.value;
formData.append('nome', nome);
formData.append('_token', token);
const url = `/series/${serieId}/editaNome`;
fetch(url, {
method: 'POST',
body: formData
}).then(() => {
toggleInput(serieId);
document.getElementById(`nome-serie-${serieId}`).textContent = nome;
});
}
</script>
@endsection
web.php
<?php
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::post('/series/{id}/editaNome', 'SeriesController@2');
Route::delete('/series/remover/{id}', 'SeriesController@destroy');
Route::get('/series/{serieid}/temporadas', 'TemporadasController@index');
SeriesController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Http\Request;
use App\Serie;
//use App\Temporada;
//use App\Episodio;
use App\Http\Requests\SeriesFormRequest;
use App\Services\CriadorDeSeries;
use App\Services\RemovedorDeSeries;
class SeriesController extends Controller
{
public function index(Request $request){
$series = Serie::query()->orderBy('nome')->get();
$mensagem = $request->session()->get('mensagem');
return view('series.index', compact('series','mensagem'));
}
public function create()
{
return view('series.create');
}
public function store(SeriesFormRequest $request, CriadorDeSeries $criadorDeSerie)
{
$serie = $criadorDeSerie->criarSerie($request->nome, $request->qtd_temporadas, $request->ep_por_temporadas );
$request->session()->flash('mensagem',"Série com id {$serie->id} e suas temporadas e episodios criada com sucesso: {$serie->nome}");
return redirect()->route('listar_series');
}
public function destroy(Request $request, RemovedorDeSeries $removedorDeSeries)
{
$nomeSerie = $removedorDeSeries->removerSerie($request->id);
$request->session()->flash('mensagem',"A Série $nomeSerie foi removida com sucesso");
return redirect()->route('listar_series');
}
public function editaNome($id, Request $request)
{
$nomeNome = $request->nome;
$serie = Serie::find($id);
$serie->nome = $novoNome;
$serie->save();
}
}