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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

1回答

656閲覧

投稿フォームにスペースのみ入力されたときのエラー文章表示

fsdfsa

総合スコア11

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2023/06/09 14:39

実現したいこと

投稿フォームにスペースのみ入力されたときはエラー分を表示させ、それ以外の場合は投稿できるようにしたいです。

前提

投稿ファームにスペースのみ入力されていた場合エラー文が表示されるようにcreateメソッドで処理していますが、
$request->validate(
[
'newPost' => 'max:100',
'user_name' => 'required|space',
'newPost' => 'required|space'
]
この部分の記述によって、正常に値が入力されていた場合はMethod Illuminate\Validation\Validator::validateSpace does not exist.というエラーが出てしまいます。
正常に値が入力された場合は、
$post = $request->input('newPost');
$name = $request->input('name');

DB::table('posts')->insert([
'post' => $post,
'user_name' => $name
]);
return redirect('/');
の処理を実行したいです。

また、全角スペースが入っている場合も同じくMethod Illuminate\Validation\Validator::validateSpace does not exist.
というエラーが発生してしまいまして、全角スペースにも対応できるようにしたいです。

該当のソースコード

index.blad.php

1@extends('layouts.app') 2 3 4@section('content') 5<div class='container'> 6 7 8 <div class='container'> 9 10//投稿フォーム 11{!! Form::open(['url' => 'post/create']) !!} 12 13<h5 class='page-header'>名前</h5> 14<div class="form-group"> 15{!! Form::input('text', 'name', null, ['required', 'class' => 'form-control', 'placeholder' => '名前']) !!} 16</div> 17 18<h5 class='page-header'>本文</h5> 19<div class="form-group"> 20{!! Form::input('text', 'newPost', null, ['required', 'class' => 'form-control', 'placeholder' => '投稿内容']) !!} 21</div> 22<div> 23 @if ($errors->any()) 24 <ul> 25 @foreach ($errors->all() as $error) 26 <li>{{ $error }}</li> 27 @endforeach 28 </ul> 29 @endif 30</div> 31 32<button type="submit" class="btn btn-success pull-right">投稿</button> 33 34{!! Form::close() !!} 35 36</div> 37 38<h2 class='page-header2'>投稿一覧</h2> 39 40 41@foreach ($lists as $list) 42 43 44<hr> 45<div class=user> 46 <span class=name>{{ $list->user_name }}</span> 47 <span class=created>{{ $list->created_at }}</span> 48</div> 49<div class=post>{{ $list->post}}</div> 50<a class="btn btn-primary" href="/post/{{ $list->id }}/update-form">編集</a> 51<a class="btn btn-danger" href="/post/{{ $list->id }}/delete"onclick="return confirm('こちらの投稿を削除してもよろしいでしょうか?')">削除</a> 52 53@endforeach 54 55<!-- 検索 --> 56<div class="col-sm-4" style="padding:20px 0; padding-left:0px;"> 57<form class="form-inline" action="{{url('/')}}"> 58 <div class="form-group"> 59 <input type="text" name="keyword" class="form-control" placeholder="名前を入力してください"> 60 </div> 61 <input type="submit" value="検索" class="btn btn-info"> 62</form> 63</div> 64 65</div> 66@endsection 67 68<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

PostsController.php

1 2public function create(Request $request) 3{ 4 5$request->validate( 6 [ 7 'newPost' => 'max:100', 8 'user_name' => 'required|space', 9 'newPost' => 'required|space' 10] 11); 12 13$post = $request->input('newPost'); 14$name = $request->input('name'); 15 16DB::table('posts')->insert([ 17'post' => $post, 18'user_name' => $name 19]); 20return redirect('/'); 21 22}

試したこと

if文で処理しようとしましたがうまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

Laravel7

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ドキュメントを調べる習慣をつけてください。
https://readouble.com/laravel/10.x/ja/validation.html

space なんてバリデーションルールはございません。

そのバリデーションが必要なのであれば、「カスタムルール」の項目をよく読み、独自のバリデーションルールを作成してください。

投稿2023/06/09 17:29

phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問