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

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

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

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3861閲覧

Laravel バリデーション文字が表示できない

Nitta

総合スコア96

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/05/07 06:09

編集2019/05/08 02:53

お世話になっております。
今、laravelで画像のアップロードをするフォームを作成しています。
しかし、バリデーションの際、ラベル部分やプレースホルダの文字は
赤文字で表示されるものの、肝心のmessageが出力できません。
お分かりの方、居られましたらご教示下さい。
宜しくお願い致します。

●Routing

Route::match(['GET', 'POST'], 'uploader2/index','Uploader2Controller@getIndex'); Route::post('confirm2', 'Uploader2Controller@confirm'); //入力

●入力フォーム

@extends('layouts.master_request') @section('title', 'Laravel test') @section('content') <h1>プロフィール画像</h1> <p><span class="label label-danger">入力画面</span> -> 確認画面 -> 完了画面</p> <form action="/confirm2" method="post" class="form-horizontal"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="hidden" name="_method" value=""> <div class="form-group @if($errors->has('username')) has-error @endif"> <label class="col-sm-2 control-label" for="username">名 前</label> <div class="col-sm-6"> <input type="text" class="form-control" id="username" name="username" placeholder="名前を入力" value="{{ old('username') }}"> @if($errors->has('username'))<span class="text-dager">{{$errors->first('username')}}</sapn> @endif </div> </div> <div class="form-group @if($errors->has('img_file')) has-error @endif"> <label class="col-sm-2 control-label" for="img_file"> アプロード画像 <br> (150×150) <br> PNG/JPG/GIFのみ可 </label> <div class="col-sm-6"> <input type="file" id="img_file" name="img_file" size="50"> @if($errors->has('img_file'))<span class="text-dager">{{$errors->first('img_file')}}</span> @endif  </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10 text-center"> <input type="submit" name="button1" value="確 認" class="btn btn-primary btn-wide" /> </div> </div> </form> @endsection

●Request(UploaderRequest2.php)

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UploaderRequest2 extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() {     return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'username'=>'required', 'img_file'=>'required|image', ]; } public function messages() { return [ "required" => "必須項目です!!",   "image" => "指定されたファイルが画像(jpg,png,bmp,svg)ではありません!!", ]; } }

●Controller(Uploader2Controller.php)

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\TUploader; use App\Http\Requests\UploaderRequest2; class Uploader2Controller extends Controller { public function getIndex() { $uploader = \App\Tuploader::orderBy('created_at','desc')->paginate(5); return view('new_photos.index')->with('img_groups',$uploader); } public function confirm(\App\Http\Requests\UploaderRequest2 $request) { $data=$request->all(); return view('new_photos.confirm')->with($data); } }

●エラー画面
イメージ説明

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

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

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

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

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

m.ts10806

2019/05/07 06:13

バリエーションではなくバリデーションでは(Validationです。Variationだと全く意味が通じません。)
Nitta

2019/05/07 06:23

すいません。先ほど修正しました。 ご確認下さい。
guest

回答1

0

ベストアンサー

ざっと見たところ間違ってなさそうなんですが、エラーは吐いてませんか?

少し気になったところだけ。

入力フォームの{{$errors->first(xxx)}}を囲っているspanタグのclass名がdangerと間違っているように見えます。

もう一つ。ソースをコピペしてエディタに貼ったところ、FormRequest(UploaderRequest2.php)の

public function authorize() {     return true; <- ここ }    ・・・・ public function messages() { return [ "required" => "必須項目です!!",   "image" => "指定されたファイルが画像(jpg,png,bmp,svg)ではありません!!", <- ここ ]; }

の2箇所のインデントに全角空白が見受けられました。ご確認ください。

投稿2019/05/07 10:06

zushi0905

総合スコア683

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

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

Nitta

2019/05/08 01:27

お世話になっております。 dager⇒danderにすべて修正 全角空白すべて調整しましたが、 Class App\Http\Requests\UploaderRequest2が存在しない というエラーが出ます。 use App\Http\Requestsでパス通してますが??
zushi0905

2019/05/08 01:42

クラスが見つからないとのことで、確かにインポートは正しいように見えますね。 UploaderRequest2.phpファイルの場所も今一度確認して見てください。 public function confirm(\App\Http\Requests\UploaderRequest2 $request) の引数のApp前に\はちゃんと入っていますか?もし忘れているならここかもしれません。 ちゃんと入っていてエラーが出ているようなら public function confirm(UploaderRequest2 $request) この記述で試してみてください。
Nitta

2019/05/08 01:49

どちらも試してみましたが、同じerrorが出ます。
zushi0905

2019/05/08 02:01

ではUploaderRequest2内っぽいですね。 messages()の   "image" => "指定されたファイルが画像(jpg,png,bmp,svg)ではありません!!", の行を消して実行してみて通るか教えてください。
Nitta

2019/05/08 02:06

同じエラーがでます。
zushi0905

2019/05/08 02:14

同じmessages()を使ったところ Previous exceptions syntax error, unexpected '"image"' (T_CONSTANT_ENCAPSED_STRING), expecting ']' (0) が出たんですが、このようなエラーは出てないですか? あとmessages()全部消して通りますか?
Nitta

2019/05/08 02:22

imageに関する構文エラーは出ていません。 全部消した場合も同じエラーですね! パスが通ってないんでしょうか?
zushi0905

2019/05/08 02:41

インポートが上手く行ってなくて、パスが通っていない可能性もありますね。 インポート文や引数は間違っているように見えないのでお力になれなそうです。 laravelのデバッグ画面のキャプチャーを質問に乗せるなどすれば分かりやすくなると思います!
Nitta

2019/05/08 02:54

一応載せてみましたが、どんなでしょうか?
zushi0905

2019/05/08 03:11

左のエラーの通りParseErrorが出てますね。 UploaderRequest2.phpの30行目の前後のどこかで構文的にエラーを起こしています。チェックしてみて一回書き直すなどしてみてください。 ちょっと
Nitta

2019/05/08 04:03 編集

シングルコーテーションが、一つ外れてました。 修正すると、messagesを全文消した状態で 英文でバリデーションがでました。 パスは確実に通ってます。どうやらmessagesが可笑しいようです。 尚、controller側に直接バリデーション設定した場合、 きっちり日本語表示されました。 今回は長々くお付き合いいただき、 ありがとうございました。 因みにフォームリクエストのmessagesは 使えないということですかね?
zushi0905

2019/05/08 04:03

使えます。 messagesも間違いに気をつけて書いてみて下さい。最初のコード通りで通るはずです!
Nitta

2019/05/08 07:25

messageも一度、最初のコード通りで行けました。 今回はありがとうございました。 また、宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問