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

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

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

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

Laravel 5

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

Q&A

解決済

3回答

3844閲覧

LaravelとjQueryでエラーチェックを行いたい

Chandler_Bing

総合スコア673

PHP

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

Laravel 5

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

0グッド

0クリップ

投稿2019/06/07 00:57

編集2019/06/07 00:59

実現したいこと

blade上のform(inputやtextなど)を送信し、バリデーションにエラーがあればそのメッセージはLaravelの特性を活かし、エラーメッセージをblade上に表示する
例)
'name' => 'required などです。

その上でエラーが表示された、inputタグの色を変更(赤枠で囲むなど)したいです。

イメージ
以下のようなblade.php(hmtl部分の抜粋)があったとします。

html

1 <form method="post" action="xxx" id="xxx"> 2 <input type="text" name="name"> 3 <input type="text" name="address"> 4 <input type="text" name="tell"> 5 <input type="text" name="email"> 6 </form> 7 <span class="btn">SEND</span> 8

手順①
sapnタグにクリックイベントを設定し、phpファイルに値を投げる。

手順②
クリックイベントの間にajax通信を行う。
返ってきた値をもとにどの部分でエラーが出たかを判定し、該当タグに色をつける。

質問
まずこの手順が正しいのかもわかりません。
他にいい手順があればお教えください。スペシフィックすぎて中々検索でもヒットしません。よろしくお願いします。

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

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

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

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

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

m.ts10806

2019/06/07 01:01

まず自身でやってから質問してください。 「スペシフィック」を正しく使えてるようには思えませんけど。 「探し方が悪いんじゃない?」くらいの感想で良ければ回答します。
m.ts10806

2019/06/07 01:23 編集

というか、前の質問の私の回答をちゃんと理解できているように思えないので。 https://teratail.com/questions/193572 まずきちんと理解して、理解したことを回答にコメントしてください。「回答がついたら解決」なんてことをやってはないですよね。
guest

回答3

0

ベストアンサー

根本的に考え方が間違っているようにしか思えないのでその指摘のみの回答です。

sapnタグにクリックイベントを設定し、phpファイルに値を投げる。

sapnタグというのは存在しません。強いてならspanでしょうけど、ボタンなのであればbuttonタグを使うべき。CSSフレームワークがボタンライクな装飾をしているからとそれに甘えてはいけません。<span>タグの役割はボタンではありません。

「Laravelの特性を活かし」と仰っていますが「phpファイルに値を投げる」と書かれている時点でフレームワークの話ではなくなっています。
というかAjaxであっても何であっても「ファイルに直接送信する」わけではありません。
リクエストは「URIに対して送信する」です。その先が http://example.com/test.phpであればたまたまtest.phpが呼び出されるだけです。
ファイルに送信するわけではありません。
当質問のURI/questions/193608も同じ。「PHPファイルに投げる」なんてことは行われていません。
サーバーに対して/questions/193608というリクエストが送られたらプログラムで受け取り、URIを解析して適宜必要なプログラムを呼び出しているだけです。

Ajaxも同じです。単に「非同期でURIにリクエストを送ってレスポンスを得る」だけで「ファイルにリクエストを投げる」なんてことはしていません。

「リクエストとレスポンス」についての考え方・概念をきちんと学びなおしてください。

手順②

クリックイベントの間にajax通信を行う。
返ってきた値をもとにどの部分でエラーが出たかを判定し、該当タグに色をつける。

Ajaxを利用した時点で既にLaravelの特性を維持するのは難しいはずです。
強いてならAjaxの処理結果をバリデーション結果の配列ではなくviewそのものにすれば「特性を利用」すると言えるかもしれませんが、viewを丸ごと受け取って入れ替えるのは非現実的です。

LaravelでデフォルトであればBootStrapを利用しているのでしょうから、エラー結果をBootStrapのvalidationの表示にあうように対応するclassの付与などJavaScript側で制御するしかないのでは。

投稿2019/06/07 01:59

編集2019/06/07 02:58
m.ts10806

総合スコア80850

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

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

0

送信前バリデートをするのにsubmit/ajaxするのは本末転倒な気がします。
jsで必要なチェックをかけてサブミットを止め必要ならエラーを表示するという
流れで検討ください

投稿2019/06/07 01:03

yambejp

総合スコア114777

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

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

0

こんにちは。
コード拝見しました。
Laravelの特性をいかすのであればコマンドプロンプトで下記のコードを入力します。
php artisan make:request リクエストクラス名

上記のコードでRequestクラスを作成するとRequestsクラスに指定したクラス名でリクエストクラスができます。

作成したリクエストクラスにはruleメソッドが用意されているのでそこにルールを付加ます。
加えてmessagesメソッドを作成します。
messagesメソッドにはルールに引っかかった際に出力されるメッセージを定義します。

コントローラでリクエストを受け取ります。
use App\Http\Requests\作成したリクエスト名;
を忘れずに!

引数に注目↓
public function メソッド名(作成したリクエストクラス名 $request) {}

ここまでの流れでLaravelはルールに引っかかったものにはerrorsを返す仕組みになっています。

エラーメッセージを表示したいblade.phpファイルでforeach文でエラーを回せば定義したエラー文が出力されます。

分からないことがあれば質問ください。

投稿2019/06/07 01:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2019/06/07 02:19

過去質問からすると、一応バリデーションの基本的な手順は踏まれているようです https://teratail.com/questions/193572 (理解したうえで使っているかはまた別の話ですけど)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問