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

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

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

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Laravel 5

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

Q&A

2回答

3123閲覧

Laravelの3桁カンマ区切り数字のバリデーションチェックについて

imonikai

総合スコア13

PHP

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Laravel 5

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

0グッド

1クリップ

投稿2019/02/12 13:13

centos,php7,Laravel5.7を使用しております。

現在、FormRequestを使用してのバリデーションチェックを行おうとしております。

しかし、テキストフィールドに入っている情報は、3桁でカンマ区切りされた半角数字と半角カンマになります。

例:1,000 or 1,234,567

これだとバリデーションルールの

integer、numeric、between等が使用できませんでした(文字が入っているので正常動作ですが・・)。

このような3桁でカンマ区切りされた数値をバリデートする場合はどのようにするべきなのかご教授お願いできますでしょうか。

こちらで考えた方法としては

1.regex:正規表現を使用する

2.submitするタイミングでjsでカンマを除去する

です。

Laravelのバリデーションルールのオプションだけで実現する方法があるのでしたら

お分かりの方、ご教授お願いします。

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

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

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

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

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

guest

回答2

0

フロントエンドの責務だと思うので,個人的には 2 ですね。バックエンドでは,送信されてくるデータに機械処理と相性の悪いコンマが含まれるのはそもそも想定しないでいい気がします。

入力としては数字だけを受け付けて,CSSでコンマを見かけだけ自動フォーマットするようなテクニックがあればいいのですが,探してみても見つからなかったので JavaScript を少しばかり書くことは避けられないでしょう。

投稿2019/02/12 15:59

mpyw

総合スコア5223

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

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

imonikai

2019/02/12 23:55

ご回答ありがとうございます。 やはりjsでカンマを削除するしかないですか… バリデーションエラーで戻ってきたタイミングでold()にはカンマ無が入っていそうだなとは思っております(まだ試していませんが…) これからjsで削除を試してみます。 ありがとうございました
退会済みユーザー

退会済みユーザー

2019/02/14 01:22

横から失礼します^^; > やはりjsでカンマを削除するしかないですか… するしか無いなんて言ってないですよ。 する処理のほうが筋が良いんじゃないかと言っています。 私も同意します。
guest

0

PHP の filter_input() のフィルタにFILTER_SANITIZE_NUMBER_FLOATがあるのでLaravelにも‥と思ったのですが、laravel のライブラリ内でGrepしてもヒットしないようですね。

「リクエスト」の「入力のトリムとノーマライゼーション」項目
https://readouble.com/laravel/5.7/ja/requests.html#input-trimming-and-normalization

を見ると、TrimStringsmiddlewareに実装されていることと同様に、middlewareを実装してカンマ除去するのが良いようです。
検証していないので、推測ですが。

投稿2019/02/12 13:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

imonikai

2019/02/14 01:17

ご回答ありがとうございます middlewareでの実装の提案ありがとうございます。 確かにmiddlewareでも可能そうですね Requestの中身を書き換えてしまうことに対する是非があるかと思いますが こちらも検討してみます ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問