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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

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

Q&A

解決済

2回答

1818閲覧

laravelで合計個数に関するバリデーションをつけたい

akoro

総合スコア27

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

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

0グッド

0クリップ

投稿2019/03/18 05:02

■背景
PHP3か月ほど、laravel初心者です。

■実現したいこと
laravelでネットショッピングで物の個数を入力するフォームを作成中。
商品の個数をそれぞれ$aと$bとし、合計個数を$sumとしたときに、数が合わなければ購入ボタンを押下したときにエラーが出せないように設定したい。

PHPでいうとどこかに
if($sum==$a+$b){~~}
を入れたい、というイメージ。

■分からないこと
どこに、上記の要素を組み込めばいいのか

■調べたこと
バリデーション公式ドキュメント
使えそうな箇所がないか目は通したが、まだ公式ドキュメントが十分に理解できず、どれを使えばいいのか判断できず。

■理解できている箇所
requestにpublic function rules()を設定し、 ['integer', 'digits_between:0,11']など、入力するものの情報が正しいかのバリデーションまでは実装できた

■環境
windows
laravel5.6

初歩的な質問でしたら申し訳ございません。
ご教授いただけますと幸いです。

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

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

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

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

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

guest

回答2

0

リクエストに入力する既存のコードでは今回ほしかったバリデーションがなかった。
公式ドキュメントの
・エラーメッセージをカスタマイズ
・バリデータの生成
を参考に自身でバリデーションを作成した。

sumにaとbをパラメータとして与え、パラメータの合計とattribute(バリデーションを組み込んだもの、この場合sum)が一致すればtrueで返す。
そうでなければカスタマイズしたエラーメッセージを返す。
というロジック。

投稿2019/03/29 01:40

akoro

総合スコア27

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

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

0

ベストアンサー

手っ取り早いのはマニュアルにもある「バリデーション後のフック」を利用して、
個数以外のバリデーションチェック後、自力でチェックする方法でしょうか。

PHP

1//通常のバリデーション作成 2$validator = Validator::make(...); 3 4//バリデーション後のフックを追加 5$validator->after(function ($validator) { 6 if ($sum != $a+$b) { //追加で判定。実際はちゃんと変数引き渡す必要があるかと 7 $validator->errors()->add('field', 'Something is wrong with this field!'); 8 } 9}); 10 11//バリデーションに失敗していた時の処理 12if ($validator->fails()) { 13 // 14}

投稿2019/03/18 05:36

sakura_hana

総合スコア11427

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

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

akoro

2019/03/19 02:46

フック調べて実装できました。 上記のコードも参考になりました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問