質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.86%

laravelでポスト送信したらエラー419が出る

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 361

現在laravelの学習中でフォームから入力した値をPOST送信しているのですが。送信後の画面で419のエラーが出て期限切れと表示されてしまいます。
調べたところcsrfを記入していないと起こったりすると出てきたのですがそこも書いてあるのに出てしまいます。
ご存知の方お力をお貸しください。一応bladeとcontrollerの内容を載せます。その他必要な部分があれば言っていただければともいます。どうかよろしくお願いいたします。

・実行したこと
1.App\Http\Kernel.phpのVerifyCsrfToken をコメントアウトしたがHelloRequestがが見つからないと言うエラーが出る

@extends('layouts.helloapp')<!-- 引数1フォルダ内の引数2ファイル  -->


@section('title','Index')<!--引数1:当てはめるセクション 引数2:そこに表示する値-->

@section('menubar')
    @parent<!--親のセクションを消したくない時に利用する-->
       インデックスページ


@endsection




@section('content')
    <p>{{$msg}} </p>
    @if (count($errors) > 0 )
        <p>入力に誤りがあります。</p>
    @endif

    <table>
        <form method="POST" action="/hello" >
            @csrf
            @if($errors->has('name'))
            <tr><th>ERROR:</th><td>{{$errors->first('name')}} </td></tr>
            @endif
            <tr><th>name:</th><td><input type="text" name="name" value="{{old('name')}} " ></td></tr>

            @if($errors->has('mail'))
            <tr><th>ERROR:</th><td>{{$errors->first('mail')}} </td></tr>
            @endif
            <tr><th>mail:</th><td><input type="text" name="mail" value="{{old('mail')}} "></td></tr>

            @if($errors->has('age'))
            <tr><th>ERROR:</th><td>{{$errors->first('age')}} </td></tr>
            @endif
            <tr><th>age:</th><td><input type="text" name="age" value="{{old('age')}} " ></td></tr>
            <tr><th></th><td><input type="submit" value="send"></td></tr>
        </form>
    </table>
@endsection




@section('footer')
copyright 2019 Takehiro.

@endsection
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Request\HelloRequest;






class HelloController extends Controller
{
    //


   public function index(Request $request){
           return view('hello.index',['msg'=>'フォームを入力:']);
}


   public function post(HelloRequest $request){


         return view('hello.index',['msg'=>'正しく入力されました']);

         $response->assertRedirect('/');
   }

 }
?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • TakehiroShinmyo

    2019/07/16 14:54

    <?php

    namespace App\Http\Requests;

    use Illuminate\Foundation\Http\FormRequest;

    class HelloRequest extends FormRequest
    {
    /**
    * Determine if the user is authorized to make this request.
    *
    * @return bool
    */
    public function authorize()
    {
    if($this->path() == 'hello' ){
    return true;
    }else{
    return false;




    }


    }

    /**
    * Get the validation rules that apply to the request.
    *
    * @return array
    */
    public function rules()
    {
    return [
    'name' => 'required',
    'mail' => 'email',
    'age' => 'numeric|between:0,150',

    //
    ];
    }
    }

    こちらになります

    キャンセル

  • mix-peach

    2019/07/17 10:03

    tokenを無効にして、HelloRequest がない、、というエラーが出るのは、
    HelloController に記載されている HelloRequestのuse文の、namespaceが間違っているからですよ。

    現在
    use App\Http\Request\HelloRequest;

    正しくは
    use App\Http\Requests\HelloRequest;
    (Request の後ろに s)

    キャンセル

  • mix-peach

    2019/07/17 10:15

    sessionの方に問題があるのかもしれないので、sessionの保存時間や、実際にsessionが保存されているか等、確認してみたらいいかもです。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる