2024_Hello_World
@2024_Hello_World

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[Laravel]入力フォームにバリデーション機能を実装したい

Q&A

Closed

解決したいこと

入力フォームにバリデーション機能を実装したい。
Laravel入門という本のサンプルコードの通り実装したのですがエラーが発生しました。(index.blade.phpの12行目)
解決方法を教えてください。

発生しているエラー

スクリーンショット 2024-03-21 125909.png

スクリーンショット 2024-03-21 131426.png

該当するコード

index.blade.php
@extends('layouts.helloapp')

@section('title','Index')

@section('menubar')
    @parent
    インデックスページ
@endsection

@section('content')
    <p>{{$msg}}</p>
    @if (count($errors > 0))
    <div>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
    @endif
    <form action="/hello" method="post">
    <table>
        @csrf
        <tr>
            <th>name:</th>
            <td><input type="text" name="name" value="{{old('name')}}"></td>
        </tr>
        <tr>
            <th>mail:</th>
            <td><input type="text" name="mail" value="{{old('mail')}}"></td>
        </tr>
        <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>
    </table>
    </form>
@endsection

@section('footer')
copyright 2020 tuyano.
@endsection
HelloController.php
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class HelloController extends Controller{

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

    public function post(Request $request){
        $validate_rule = [
            'name' => 'required',
            'mail' => 'email',
            'age' => 'numeric|between:0,150',
        ];
        $this->validate($request, $validate_rule);
        return view('hello.index', ['msg'=>'正しく入力されました!']);
    }
}
web.php
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HelloController;
use App\Http\Middleware\HelloMiddleware;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/


Route::get('hello',[HelloController::class,'index']);
Route::post('hello',[HelloController::class,'post']);
0

1Answer

Comments

  1. クローズしてるけど、どのように解決したの?

  2. 12行目をタイプミスしていました。
    @if (count($errors) > 0)に訂正したら実装できました!
    【訂正前】
    @if (count($errors > 0))
    【訂正後】
    @if (count($errors) > 0)

Your answer might help someone💌