2
respostas

@csrf não está funcionando

No meu arquivo create.blade.php tem o codigo:

@extends('layout')

@section('content_title')
    Adicionar Séries
@endsection

@section('content')
    <form action="post">
        @csrf
        <div class="form-group">
            <label for="nome">Nome:</label>
            <input type="text" name="nome" class="form-control mb-2" id="nome">
        </div>

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

Porém no navegador aparece o @csrf acima do campo de texto. Pesquisei um pouco na internet e vi que tem outra opção é o {{ csrf_field() }}, mas de qualquer forma as duas formas dá erro e não salva no banco de dados.

Meu arquivo SeriesControler.php:

<?php 

namespace App\Http\Controllers;

use App\Serie;
use Illuminate\Http\Request;

class SeriesController extends Controller {
    public function index(){
        $series = Serie::all();
        return view('series.index', compact('series'));
    }

    public function create(){
        return view('series.create');
    }
     public function store(Request $request)
    {
        $serie = Serie::create($request->all());
        echo "Série com id {$serie->id} criada: {$serie->nome}";
    }
}
2 respostas

Acabei de perceber que no meu arquivo create.blade.php está action="post" Acabei de concertar isso e tentei adcionar uma serie, deu tudo certo, não deu nenhum erro.

O unico problema é o @csrf que continua aparecendo na tela. Se eu tirar o @csrf continua funcionando normal, pois estou usando o {{ csrf_field() }}

Fala, Felipe. Ao invés de action="post" você deveria ter method="post".

De qualquer forma, o @csrf deveria funcionar, conforme você pode conferir na documentação: https://laravel.com/docs/5.8/csrf

Você está utilizando a versão mais recente (5.8) do Laravel?

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