[Laravel]入力フォームにバリデーション機能を実装したい
Q&A
Closed
解決したいこと
入力フォームにバリデーション機能を実装したい。
Laravel入門という本のサンプルコードの通り実装したのですがエラーが発生しました。(index.blade.phpの12行目)
解決方法を教えてください。
発生しているエラー
該当するコード
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