Laravel documentationを引用:デフォルトではなぜvalidate()メソッドはrequest()経由でアクセスできますか?
、Laravelのベースコントローラクラスは、強力な検証ルールの様々な着信HTTPリクエストを検証するための便利な方法を提供ValidatesRequestsトレイト
を使用していますそれは読んで、本当ですコードApp\Http\Controllers\Controller
は実際にValidatesRequests
形質を使用しています。 ValidatesRequests
にはvalidate
メソッドがあります。
私にとって本当に奇妙なのは、ドキュメント内のどこにいてもvalidate
メソッドが$request
オブジェクトで呼び出されているということです。そしてそれはこのように機能します。このコードでフォームを検証できます:
public function store()
{
$attributes = request()->validate([
'name' => 'required|string|max:255',
]);
// ...
}
しかし、私はRequestクラスにバリデーションメソッドが存在するとは見ません。ファイルの先頭にちょうど奇妙なコメント行:
/**
* @method array validate(array $rules, array $messages = [], array $customAttributes = [])
*/
ので、2つのものがあります:
- 私はLaravelのマニュアルに信頼するのか分かりません。
$request
オブジェクトで検証がどのように機能するのか分かりません。
そして、私の実際の質問は:
は私が$request
オブジェクトを介してvalidate
メソッドを使用する場合は、まだ真のドキュメントから貼り付けた初期の引用ですか?もしそうなら、どのように機能しますか?
ありがとう!この場合、 'ValidatesRequests'は役に立たないと思いますが、Laravelの最初の引用は今では無関係ですか? (なぜなら、最初の引用文が 'ValidatesRequests'特性があることを考慮していないので、文書全体が書かれているからです) –
@ rap-2-hいいえ、それは無駄ではありません。彼らはさまざまな状況のためです。 *コントローラ*と 'request() - > validate()'の '$ this-> validate()'は同じものではありません。 – ceejayoz
申し訳ありませんが、私は "役に立たない"(とにかく、私はそれを書いた)という意味ではありませんでした。私は "あなたはValidatesRequestsが使用されていないと思う?*このケースでは... [...]?"とりあえずありがとう! –