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

Missing required parameter

Boa tarde Vini, tô tendo o seguinte erro e não to conseguindo resolver: **

  1. Missing required parameter for [Route: series.edit] [URI: series/{series}/edit] [Missing parameter: series].**

Segue abaixo meu código:

SeriesController.php

<?php

//use...
//namespace...
tive q ocultar


class SeriesController extends Controller
{

    public function index(Request $request) //recebemos por parâmetro a requisição
    {

        $series = Serie::all(); //como se fosse um select só que usando ELOQUENT
        $mensagemSucesso = session('mensagem.sucesso'); //vai exibir a mensagem caso exista

        return view('series/index')->with('series', $series)->with('mensagemSucesso', $mensagemSucesso); 
    }

    public function create()
    {
        return view('series.create');
    }

    public function store(SeriesFormRequest $request)
    {
        $request->validate([
            'nome' => ['required', 'min:3'] //nome é obrigatório, min 3 caracteres
        ]);

        $serie = Serie::create($request->all());

        return redirect(route('series.index'))->with('mensagem.sucesso', "Série {$serie->nome} excluída com sucesso!");    
    }

    public function destroy(Serie $series, Request $request)
    {
        /* 
        $serie = Serie::find($request->series);
        Serie::destroy($request->series); //DELETE FROM series WHERE $request->series
        */
        $series->delete();

        return redirect(route('series.index'))->with('mensagem.sucesso', "Série {$series->nome} removida com sucesso!");
    }

    public function edit(Serie $series)
    {
        return view('series.edit')->with('serie', $series);
    }

    public function update(Serie $series, SeriesFormRequest $request)
    {
        $series->fill($request->all());
        $series->save();

        return to_route('series.index')->with('mensagem.sucesso', "Série {$series->nome} editada com sucesso!");
    }
}

index.blade.php

<x-layout title="Séries">
    <h1>Séries</h1>

    @isset($mensagemSucesso)
    <div class="alert alert-success">
        {{ $mensagemSucesso }}
    </div>
    @endisset

    <a href="{{ route('series.create') }}" class="btn btn-dark mb-3">Adicionar série</a>
    <ul class="list-group">
        @foreach ($series as $serie)
            <li class="list-group-item d-flex justify-content-between align-items-center">
                {{ $serie->nome }}    

                <span class="d-flex">
                    <a href="{{ route('series.edit'), $serie->id }}" class="btn btn-primary">Editar</a>
                    <form action="{{ route('series.destroy', $serie->id) }}" method="post">
                        @csrf
                        @method('DELETE')
                        <button class="btn btn-danger">Excluir</button>
                    </form>
                </span>
            </li>
        @endforeach
    </ul>

    <script>
        const series = {{ Js::from($series); }}
    </script>
</x-layout>

edit.blade.php

<x-layout title="Editar Série">
    <x-series.form :action="route('series.update', $serie->id)" :nome="$serie->nome" :update="true">
</x-layout>

form.blade.php

<form action="{{ $action }}" method="post">
    @csrf

    @if ($update)
        @method('PUT')
    @endif
    <div class="mb-3">
        <label for="nome" class="form-label">Nome</label>
        <input type="text" 
               class="form-control" 
               name="nome" 
               id="nome" 
               @isset($nome)value="{{ $nome }}"@endisset>
    </div>

    <button class="btn btn-primary">Adicionar</button>
</form>

layout.blade.php

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> {{$title}} </title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
</head>

<body>
    <div class="container">
        <h1> {{$title}} </h1>

        @if ($errors->any())
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif

        {{$slot}}
    </div>

</body>
</html>

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SeriesController;

Route::get('/', function () {
    return redirect('/series');
});

Route::resource('/series', SeriesController::class)->only(['index', 'create', 'store', 'destroy', 'edit', 'update']); //rotas que temos
2 respostas
solução!

Seu erro está aqui:

<a href="{{ route('series.edit'), $serie->id }}" class="btn btn-primary">Editar</a>

Você fechou os parêntesis no lugar errado

Deu certo agora, obrigado mesmo vini

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software