2
respostas

Comportamento estranho ao editar

Olá, quando eu edito uma série, o sistema até modifica o nome, mas cria um novo registro com o novo nome e mantém o nome anterior em outro registro. Exemplo: Tenho a série "XPTO" e clico para editá-la. Daí, ao editar para ABCD, ele deixa a série "XPTO" intacta e cria uma outra ABCD, mostrando a mensagem "Série ABCD editada com sucesso". Onde estou errando? Obs.: Estou passando as flashMessages com o put porque o flash aqui dá erro e informa que o método flash não existe em session.

CONTROLLER

public function store(Request $request) {
    $serie = Serie::create($request->all());
    $request->session()->put('success', "Série '{$serie->nome}' criada com sucesso!");
    return redirect()->route('series.index')->with('success', "Série '{$serie->nome}' criada com sucesso!");
}

public function update(Serie $serie, Request $request) {
    $serie->fill($request->all());
    $serie->save();
    return redirect()->route('series.index')->with('success', "Série '{$serie->nome}' editada com sucesso!");
}

CREATE.BLADE.PHP

<x-layout title="Nova Série">
    <a class="btn btn-dark" href="{{ route('series.index') }}">
        << Voltar</a>
            <x-series.form :action="route('series.store')" />
</x-layout>

EDIT.BLADE.PHP

<x-layout title="Editar Série '{{ $serie->nome }}'">
    <a class="btn btn-dark" href="{{ route('series.index') }}">
        << Voltar</a>
            <x-series.form action="{{ route('series.update', $serie->id) }}" :nome="$serie->nome" />
</x-layout>

FORM.BLADE.PHP

<form action="{{ $action }}" method="post" class="mt-5 form-group">
    @csrf
    @isset($nome)
        @method('PUT')
    @endisset
    <label for="nome" class="form-label">Nome:</label>
    <input type="text" name="nome" id="nome" class="form-control"
        @isset($nome) value="{{ $nome }}" @endisset>
    <button type="submit" class="btn btn-primary mt-3 py-2 px-5">
        @if (@isset($nome))
            Editar
        @else
            Adicionar
        @endif
    </button>
</form>

ROUTES

Route::controller(SeriesController::class)->group(function () {
    Route::get('/series', 'index')->name('series.index');
    Route::get('/series/create', 'create')->name('series.create');
    Route::get('series/edit/{idSerie}', 'edit')->name('series.edit')->whereNumber('idSerie');
    Route::post('/series/store', 'store')->name('series.store');
    Route::put('/series/update/{idSerie}', 'update')->name('series.update')->whereNumber('idSerie');
    Route::delete('/series/destroy/{idSerie}', 'destroy')->name('series.destroy')->whereNumber('idSerie');
});
2 respostas

Ninguém mesmo? :(

Olá, Alan!

Peço desculpa pela demora em responder o seu tópico.

Analisando os trechos de código que você compartilhou não consigo identificar nenhum problema ou inconsistência que leva a situação que você comentou.

Por conta disso, peço que compartilhe comigo todo o seu projeto, usando o GitHub ou Drive do Google como meio. Pois, assim, conseguirei fazer diversos testes para poder encontrar a causa do problema.

Fico no aguardo e à disposição