お世話になっております。kaoriと申します。
【やりたい事】
入力フォームで入力し、登録を押した時
各入力エリアの値をバリデーションして、もし未入力や正しくない場合は確認画面に遷移せず
エラーメッセージを出力するという事を行おうとしております。
今後も流用して使えるように、汎用的なコードで作成を試みております。
【詰まっていること】
HTMLからPHPに値を渡す事はできましたが
汎用的なコードにしたいので、以下のようにHTMLから渡される値は
REQUEST配列の中身がカラになるまでval変数に格納するという内容になっております。
<?php require_once '../vendor/autoload.php'; require_once 'class.php';//バリデーションクラスの読み込み $loader = new Twig_Loader_Filesystem('templates'); $twig = new Twig_Environment($loader); //セッションスタート session_start(); //$_REQUEST配列を全て取得 foreach($_REQUEST as $key => $val[]){} //{echo "$key = $val<br>";} $num(val[1]); //数値のみのファンクションを呼び出し /* //valに格納された値をhtmlentitiesにして代入 foreach((array)$val as $val2){ $htmlentities = htmlentities($val2,ENT_QUOTES,'UTF-8'); //htmlentities化した値をセッション配列に格納 $_SESSION['data'] = $htmlentities; $data = $_SESSION['data']; echo '<pre>'; var_dump($data); echo '</pre>'; }*/ /* //次に使用するテンプレートの指定(確認フォーム) $template = $twig->loadTemplate('check.html.twig'); //確認フォームに一つずつ値を渡すコードを書きたいが、分からないため模索中 echo $template->render($data2); */ ?>
$_REQUESTで受け取った値を$val配列に格納して取得できていることは確認できました。
入力エリア
:名前 <input type name="name">
:ひらがな <input type name="hiragana">
:電話番号 <input type name="telNo">
各nameの3つの値毎にバリデーションしたいので
$val[0]は未入力のfunctionと全角のfunctionを設定
$val[1]は未入力とひらがなのfunctionを設定
$val[2]は未入力と数字のみのfunctionを設定
と配列の連番ごとにfunctionを設定したいのですが
そもそも現状val[0]だと何も取得できないのと(すみません、調べてもやり方がわかりませんでした)
このコードだと各エリアのバリデーションチェックは不可能でしょうか
おとなしく $name = $_REQUEST['name'];といったん変数にいれて
もし値がなければ未入力で、値が$nameに入ったらその値をバリデーションチェックする
という書き方にした方がよろしいでしょうか。
もし私の書き方が伝わりにくかったら、なんなりとお申し付けください。
皆さまのご助言をいただけたら幸いです。
以上、よろしくお願いいたします。
※追記
皆さまのおっしゃっていた配列になっていない件について
私の勘違いでできていると思っておりましたができておりませんでした。失礼いたしました。
現在は$val ⇒ $val[] としまして、無事配列化することができました。
皆さまありがとうございました。
回答3件
あなたの回答
tips
プレビュー