Como alterar a situação e manter na mesma página com Laravel 10


Neste tutorial, será apresentado como alterar a situação e permanecer na mesma página com Laravel 10.

Primeiramente, será demonstrado como criar o link para a alterar a situação.

Em seguida, será explicado como efetuar a alteração da situação no banco de dados.

Por fim, será mostrado como manter o usuário na mesma página após editar a situação.


Download do código fonte desenvolvido na aula: Download

Curso de Laravel: Mais Detalhes do Curso

Playlist completa sobre Laravel: Acessar

Receber as aulas gratuitas do curso de Laravel: Acessar


Para começar, é utilizado como base o projeto da aula "Como criar campo select no formulário com Laravel 10".

Criado o link para alterar situação na view "resources/views/contas/index.blade.php".

<a href="{{ route('conta.change-situation', [ 'conta' => $conta->id])}}">
    {!! '<span class="badge text-bg-' . $conta->situacaoConta->cor . '">' . $conta->situacaoConta->nome . '</span>' !!}
</a>

No arquivo "routes/web.php", criada a rota alterar a situação.

Route::get('/change-situation-conta/{conta}', [ContaController::class, 'changeSituation'])->name('conta.change-situation');

Na controller "app/Http/Controllers/ContaController.php", criado o método "changeSituation". No mesmo, foi criado a QUERY SQL para editar a situação no banco de dados e, em seguida, retornado o usuário para a página anterior, mantendo-o na mesma página que estava quando clicou no link para alterar a situação.

// Alterar situação da conta
public function changeSituation(Conta $conta){

    try{

        // Editar as informações do registro no banco de dados
        $conta->update([
            'situacao_conta_id' => $conta->situacao_conta_id == 1 ? 2 : 1,
        ]);

        // Salvar log
        Log::info('Situação da conta editada com sucesso', ['id' => $conta->id, 'conta' => $conta]);

        // Redirecionar o usuário, enviar a mensagem de sucesso
        return back()->with('success', 'Situação da conta editada com sucesso!');

    } catch( Exception $e){

        // Salvar log
        Log::warning('Situação da conta não editada', ['error' => $e->getMessage()]);

        // Redirecionar o usuário, enviar a mensagem de erro
        return back()->with('error', 'Situação da conta não editada!');
    }
    
}

Baixar o código-fonte completo do projeto.

Bom, era isso. Espero que o tutorial tenha sido útil!