以下はマニュアルのバリデーションの処理を記載したコードですが、withErrorsメソッドはなんのオブジェクトのメソッドなのでしょうか...?
記載しましたリンクのページ(公式マニュアル)を見たのですが分からなかった為、質問させて貰いました。
<?php namespace App\Http\Controllers; use Validator; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class PostController extends Controller { /** * 新しいブログポストの保存 * * @param Request $request * @return Response */ public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } // ブログポストの保存処理… } }
マニュアル探せばわかることをわざわざ質問する理由をお答えください。
知って何をどうしたいのかも分かりません。(そこまで知りたいならコアソース読めって何人にも言われてるような内容じゃないでしょうか)
ちなみに、オブジェクトが何のことか理解しているか怪しい初心者にどのような説明をしても根本的な理解を得られるわけがないので、無駄足になるということを自覚してください。
「丸投げ、問題課題を明記しない質問にどこまでここの回答者は答えるのか」という実験でしたら通報します。
https://teratail.com/questions/195450
https://teratail.com/questions/195655
https://teratail.com/questions/197151
https://teratail.com/questions/197668
https://teratail.com/questions/194052
など、傍から見ると解決となる回答がついているにも関わらず放置されている質問があります。
本当に解決していないのなら質問に状況を追記し、着実に解決する必要があるのではないでしょうか。
>公式マニュアルを見たのですが分からなかった為
これを見ても本当に回答者側が意図したページを確認したかなんて誰もわかりませんよ。
「どこを見て」「何が」「どうわからなかったか」書かないと丸投げの問題・課題なしの状態からは抜け出せません。(自分が同じような質問受けたらどう感じる?)
「質問するときのヒント」忘れてませんか。「自分は100回以上質問してきてから大丈夫だ」と思うのでしたらそれは大きな間違いです。むしろ100回以上質問してきて質問の質がどんどん下がってきているし、本当に今まで質問して解決にしている回答を本当に理解して解決しているのでしたら、質問する必要はないはずですよ。「なぜ今でもこんな質問しているのか」謎で仕方ありません。
1ページ見て分からないなら、別のページを見るのが自然な流れじゃないですかね。
あと、もしも「->」の意味が分からないなら、そう書いた方がいいと思います。
https://teratail.com/help/question-tips
>2-1. 今置かれている状況を整理し、わかっている範囲とわからない範囲を明確にしましょう
@sakura_hanaさん
バリデーションに関するページを確認したのですが、分からなかった為質問に至りました。
別のページというのは、どのページを見れば解決につながるでしょうか?
マニュアルのバリデーションに関するページに書かれていないのは、「withErrorsは何のオブジェクトのメソッドか」という質問と、バリデーションには直接的な関係が無いからです。
では他に怪しい候補は何か?というと、
・withErrorsの前後にくっついてる「->」が怪しい
・メソッドは通常、クラス内に存在するもの→このクラスそのものにメソッドが存在している?→自力実装はしていない→継承元である「Controller」が怪しい
・しかしこのクラス内のメソッドであるならば「$this」が付くはず→「->」の元にある「redirect」はそれ単体で存在している($thisが付いていない)→「redirect」が怪しい
と推測出来ます。
あとは上記の「」で括ったものを1つ1つGoogle検索(キーワードは「php ->」とか「laravel redirect」とか)で調べていけばいいと思います。
@sakura_hanaさん
アドバイスどうもです。
やはりredirectが怪しいですね...
実はredirectが怪しいと思い、「var_dump(property_exists('Redirect, 'withErrors'))」としてみたのですが、falseが返ってきてしまいまして...
Redirectクラスには存在しないのかな...?と思ったんですよね...
でも冷静に考えると確かに、クラス内のメソッドですと、$thisが付きますし、Controllerではないですしね...
であれば「redirectは本当にRedirectというクラスなのか?」を疑うべきでしょうね。
(なお「laravel redirect」で調べると正解が書いてあるマニュアルのページが出ますが、var_dumpを使って直接調べてしまうのもアリでしょう)
正確には「redirect()とは何か? そして何を返すのか?」ですね。
var_dump(redirect())としましたら、Redirectorオブジェクトを返していることが分かりました。
しかし、その中にwithErrorsメソッドは存在しませんでした。
ということは、バリデーションにてエラーが存在しなかった場合は、withErrorsメソッドはredirect()の返り値である、Redirectorオブジェクトには含まれない?ということですかね...?
おっと私も細かくマニュアルを見れていませんでした。正確には「redirect('post/create')とは何か? そして何を返すのか?」ですね。
もう面倒なのでリンクも貼っちゃいますね。
https://readouble.com/laravel/5.5/ja/responses.html
「redirect('post/create')」こちらのように引数にリダイレクト先を指定し、var_dumpしてみましたら、RedirectResponseを返していることが確認できました!
その為に、Responseのリンクを貼って頂いてたんですね。ありがとうございます。
なんですが...やはりwithErrorsメソッドが見つかりません...
な、何故なのでしょうか...
すっごいスルーしてましたが(使ったこと無かったんで)、property_existsではなくmethod_existsじゃないですかね?
https://laravel.com/api/5.5/Illuminate/Http/RedirectResponse.html
上記リファレンスにはあるって書いてあるので、「自分の検査方法が間違っている」と想定する部分ですね。
リンクどうもです!
マニュアルではなくこのような便利なサイトがあったのは知りませんでした...
あ、本当ですね...method_existsでした...変数調べても仕方ないですよね...
コントローラのアクションメソッド内で「var_dump(method_exists('RedirectResponse', 'withErrors'));」としてみましたが、結果はfalseとなってしまいました。貼って頂きましたリンクには、withErrorsメソッドの記述がありましたし、そこに関しては多分自分のコード内になんらかの間違いがあるだけですよね...
じゃあfunction_existsですかね。(クラスメソッドと関数ってどう違うのか不勉強なのでよく分かってないですが……)
それか、'RedirectResponse'が「Illuminate/Http/RedirectResponse」であると認識されていないのかもしれません。この辺はPHPのマニュアル見てみてください。
分かりました。後は自分で調べてみようと思います。
ご丁寧にアドバイスくださり、ありがとうございました。
「「どこを見て」「何が」「どうわからなかったか」書かないと丸投げの問題・課題なしの状態からは抜け出せません。(自分が同じような質問受けたらどう感じる?)」
と指摘しましたが、「ページ見ました」だけで「本当に必要な箇所を見たか」までは伝わりませんよ。
見た上での理解度も分からないし、「分からなかった」だけだから「そもそも見たかどうか」すら怪しいです。今までの経緯からするとちゃんと見てない可能性の方が高いですし、回答者もそういう目で見ているという自覚は持ってください。
今回のsakura_hanaさんのように既に私以外にも何人も同じ指摘をしてくる人がでてきています。それはどういうことかお分かりでしょうか。
「分かりました。後は自分で調べてみようと思います。
ご丁寧にアドバイスくださり、ありがとうございました。」
とコメントを信じていいなら「誰のアドバイスも必要ない」ということになります。
口だけのことが非常に多いです。その定型句のような「ありがとう」は何度も見ました。
回答2件
あなたの回答
tips
プレビュー