HTML_QuickFormの関数の使い方について

このQ&Aのポイント
  • HTML_QuickFormのsetRequiredNote関数についてマニュアルを見ても表示されない問題が発生しています。
  • フォームに必須入力フィールドが含まれている場合に通常はフォームの下に表示されるはずですが、表示されていません。
  • テンプレート側の記述が必要かどうか調べましたが、わかりません。
回答を見る
  • ベストアンサー

HTML_QuickFormの関数について

setRequiredNoteの使い方でわからないのですがマニュアルをみるとフォームに必須入力フィールドが 含まれている場合に 通常はフォームの下に表示されます。とありますが全く表示されません。 表示はsmartyで行っておりざっくりですが以下のようにしています。 $form->addElement('textarea', 'message', 'メッセージ:'); $form->addRule('message', '必須項目です', 'required'); $form->setRequiredNote('*必須入力'); フォーム等については問題なく表示され動作するのですがこれを表示するにはテンプレート側に どう記述すればいいですか? phpで$formをdumpしたところ[_requiredNote]に設定値があったので試しに{$form.requiredNote}と 入れてみましたが表示されず調べてみましたが全くわからずです。

  • dcx147
  • お礼率33% (214/636)
  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • kaze2com
  • ベストアンサー率50% (6/12)
回答No.1

{$form.requirednote} かな?

参考URL:
http://pear.php.net/manual/ja/package.html.html-quickform.html-quickform-renderer-array.php

関連するQ&A

  • QuickFormのradioボタンでエラーが出る

    require_once("HTML/QuickForm.php"); $form = new HTML_QuickForm(); $ques[] = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1');←”ここでエラーがでる” $ques[] = &HTML_QuickForm::createElement('radio', null, 'No', 'No', '2'); $form->addGroup($ques, 'ques'); $form->addRule('ques', '入力してください。', 'required', null, 'client'); if ($form->validate()){ $form->freeze();} $form->addElement('submit','submit', '送信'); require_once("HTML/QuickForm/Renderer/ArraySmarty.php"); $renderer= new HTML_QuickForm_Renderer_ArraySmarty($smarty); $form->accept($renderer); $smarty->assign('form', $renderer->toArray()); $file = 'test.tpl'; $smarty->display($file) ----------------------------------------------------------- HTML_QuickFormでラジオボタンをチェックしたいのですが、「←”ここでエラーがでる”」の部分で、Fatal error: [] operator not supported for strings in /virtual/パス/test.php on line 19←ここの数字はエラー行 のエラーがでます。 どうやったら、エラーを回避できるか分かりません。 よろしくお願いします。

    • 締切済み
    • PHP
  • クラスについて

    フォームの出力やエラーチェックを統括する自作クラスを作ろうとおもっております。 略すぎですが以下のようなソースの場合$formに値を返し配列にしていくにはどうすれば可能でしょうか? class Form { public function __construct() { } function addElement($type, $name, $label, $arr) { return "<textarea name=\"$name\"></textarea>"; } } $form = new Form(); $form->addElement('textarea', 'message', 'メッセージ:', array('rows' => 13, 'cols' => 58)); //同様に必要な分addElementでフォーム生成 うまく表せないのですがclass内で$formに配列を追加していくイメージになるのでしょうか? 例えば単純に $str = $form->addElement('textarea', 'message', 'メッセージ:', array('rows' => 13, 'cols' => 58)); とすれば$strに格納されるのですがpearのhtml_quickformを参考にしてみたところ出力されるものが 結果が全て$formに格納されるようでした。 できるだけソースもすっきりさせたくこのような方法を取り入れたいと思い最終的には$formをsmartyに 渡し表示させたいと思っております。 また、詳細な仕様もまだ決め兼ねている状態でこのようなものを自作するにあたり参考になる情報等が ありましたら是非教えて頂けますと幸いです。 上記のpearを参考にしようと思ったのですがファイル数も多く入り組んでおりなかなか理解できない状態です^^;

    • ベストアンサー
    • PHP
  • HTML_QuickFormのチェックボックスについて

    smartyと連携させて作っています。 チェックボックスで取得した値を任意の場所に指定させたいのですが どのようにすればできるのでしょうか? 現状は、チェックボックスの値は正常に表示されるのですがメール本文 の最下部に表示されてしまい任煮の場所に表示させたいのですが方法がわかりません。 「現状のメール本文」 =============================================================== 【氏名】 nameに入力した値 【選択】 Array //←Arrayではなくここに選択肢の値を入れたい =============================================================== cb3の値 //←ここに選択肢の値は表示させたくない 中身は以下のようになっています。(抜粋) <?php $form->addElement('text', 'name', '氏名'); $checks = array(); $checks[] =& HTML_QuickForm::createElement('checkbox', 'cb3_1', null, 'cb3_1_label'); $checks[] =& HTML_QuickForm::createElement('checkbox', 'cb3_2', null, 'cb3_2_label'); $checks[] =& HTML_QuickForm::createElement('checkbox', 'cb3_3', null, 'cb3_3_label'); $form->addGroup($checks, 'cb3', '選択', "<br />\n"); $form->addGroupRule('cb3', '選択は必須項目です', 'required', null, 1); $message = <<<EOD =============================================================== 【氏名】 {$value['name']} 【選択】 {$value['cb3']} =============================================================== EOD; foreach ($value['cb3'] as $k => $v) { switch ($k) { case 'cb3_1' : $message .= "選択肢1が選択されました。\n"; break; case 'cb3_2' : $message .= "選択肢2が選択されました。\n"; break; case 'cb3_3' : $message .= "選択肢3が選択されました。\n"; break; } } mb_send_mail($to, $subject, $message, "From: {$value['email']}"); $form->freeze(); } else if ($form->validate() && isset($value['confirm'])) { } else { } ?>

    • 締切済み
    • PHP
  • なぜ、unexpected T_VARIABLEになるのでしょうか? 

    WindowsXP機に、PHP5とPEARを入れています。 あるWebサイトに記述されている下記のサンプルスクリプトをコピペして(PEARは絶対パスに書き換えて)実行しましたが、次のエラーが出ます。全角スペースは入っていませんし、原因が分かりません。 なぜ、unexpected T_VARIABLEになるのでしょうか? どのようにすれば解決できるでしょうか? エラー Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\Program Files\Apache Group\Apache2\htdocs\HQuickForm_test\QfrmSmpl.php on line 14 サンプルスクリプト一部抜粋: <?php require_once("C:\php\PEAR\HTML\QuickForm.php"); class QfrmSmpl{ var $_form; function QfrmSmpl($sbmtAct){ $this -> _form = new HTML_QuickForm("frmSmpl","post",$sbmtAct); } function setForm(){ $this -> _form -> addElement("text","txtName","名前(全角日本字):"); $this -> _form -> addElement("text","txtEname","名前(半角英字):"); $this -> _form -> addElement("text","txtEmail","E-mail:"); $this -> _form -> addElement("text","txtEmail2","E-mail(確認用):"); $this -> _form -> addElement("textarea","txtrComment","コメント:"); } $this -> _form -> applyFilter(__ALL__,"trim"); $this -> _form -> addRule("txtName","名前を入力!","required", null, "client"); $this -> _form -> addRule("txtEname","半角英字で入力!","alphanumeric", null, "client"); $this -> _form -> addRule(array("txtEmail","txtEmail2"),"メールアドレス不一致!","compare", null, "client"); $this -> _form -> addRule("txtEmail","無効なメールアドレス!","email", null, "client"); $this -> _form -> addRule("txtrComment","コメントを入力!","required", null, "client"); $this -> _form -> setRequiredNote("<font color='red'>*</font>必須入力"); } 以下略

    • ベストアンサー
    • PHP
  • QuickFormのaddElementを使ったパスワードについて教え

    QuickFormのaddElementを使ったパスワードについて教えて下さい。 PHPとMYSQLとQuickFormを使い、WINDOWS VISTA環境にて会員機能の画面を作っています。 入力画面→確認画面→登録(更新)画面の構成で作っています。 ◎目的(やりたいこと) 登録や更新情報の入力画面でパスワードの入力欄(入力必須)は入力する度に「*」が表示される。 入力内容の確認画面に遷移すると、パスワードが「*」表示されるのみの状態(変更不可)とする。 登録処理や更新処理を行うと実際に入力画面に入力したパスワードがmysqlにmd5計算されたものをもとに登録や更新を行う。 ※現状では、登録画面にてユーザーIDの入力項目を設けてあり、ログイン画面にて登録したユーザーIDとパスワードでログインできていますが、今後もこの機能を使いたいです。 現状は下記のリンク先のものがソースとなりまして、パスワードは「*」表示ではなく、画面には入力した文字列が表示されてしまいますが、それ以外の 目的は達成(正常に動作)しています。 単純に入力項目の設定で(1)$form->addElement('text','password','パスワード');の行を (2)$form->addElement('password','password','パスワード');に変更して実行すると、 確認画面で$form->freeze();を行い、(3)$form->addRule('password', 'パスワードを入力してください。', 'required', null, 'server');の行でパスワードが入力されていないものと判定されます。 そして、画面に「パスワードを入力してください。」の警告が表示されて登録や更新処理に進みません。 また、(1)を(2)に変更して、(3)の行をはずして実行すると、警告は表示されず、入力したパスワードがMD5計算されて、mysqlに登録されます。 しかし、ログイン画面に登録したユーザーIDとパスワード(MD5計算前のパスワード)を入力してログインしようとすると、「ユーザ名かパスワードが間違っています。」という警告が画面に出てログインできません。 ※ログイン認証のロジックは変えていないので不思議です。この時ログイン認証でのauth->statusの値は-3でした。 ソースは、下記のリンクをクリックしたものです。 ソースのどこに問題があるのかが分からないので、関係のないロジックも含まれていて解読に苦しんでしまうと 思いますが、どうかお許し下さい。 分かる方がいましたら、ご教授下さい。 ◎ソース http://www.beauty-program.com/sample.txt 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHP(smarty)についての質問(文字化け)

    あるサイトでsmartyを勉強中ですが、そのサンプルファイルを実行したところ、 文字化けが発生して困っています。 ・form.php←お問い合わせ用テンプレートファイルの指定 ・form.tpl←お問い合わせ情報を入力させるテンプレートファイル ・template.tpl←テンプレートファイルを表示させるテンプレートファイル form.phpから、お客様情報を入力させるためのテンプレートファイル(form.tpl)を指定し、 template.tplにそれを表示させるのが処理概要です。 実行すると、タイトルの"問い合わせフォーム"は表示されますが、 それ以下のform.tplの日本語部分が文字化けします。 template.tplで{include file=$content_tpl params=$params}の処理で form.tplを取り込んでいますが、その時文字コードがおかしくなっている気がします。 form.tplに対して文字コード(UTF-8)が有効になっていないと思われます。 実験的に、{include file=$content_tpl params=$params}を削除して、 そこにform.tplの記載をすべて記述すると文字化けは起こりませんでした。 文字コードの指定をform.tplに対しても有効にするにはどのように修正すればよろしいでしょうか。 以下にソースファイルを記載します。 ★form.php <?php // 共通の設定を読み込む require_once( 'common.php' ); // Smartyオブジェクト取得 $smarty =& getSmartyObj(); // ひな形のSmartyテンプレートでincludeするテンプレートを指定 $smarty->assign( 'content_tpl', 'form.tpl' ); // パラメータを渡す $smarty->assign( 'params', array( 'types' => array( 'request' => '意見、要望', 'question' => '質問、問い合わせ', 'other' => 'その他' ) ) ); // ページを表示する $smarty->display( 'template.tpl' ); ?> ★form.tpl <p>お問い合わせやご意見・ご要望を以下のフォームにご記入の上ご送信ください。</p> <form method="post" action="post.php"> <dl> <dt>お名前</dt> <dd> <input type="text" name="name" value="{$params.name|escape:'html':'UTF-8'}" /> {if $params.errors.name} <p class="error-message">名前を入力してください。</p> {/if} </dd> <dt>メールアドレス</dt> <dd> <input type="text" name="address" value="{$params.address|escape:'html':'UTF-8'}" /> {if $params.errors.address} <p class="error-message">アドレスが不正です。</p> {/if} </dd> <dt>お問い合わせ種類</dt> <dd> {html_options name="type" options=$params.types selected=$params.type} {if $params.errors.type} <p class="error-message">お問い合わせ種類が不正です。</p> {/if} </dd> <dt>お問い合わせ件名</dt> <dd> <input type="text" name="title" value="{$params.title|escape:'html':'UTF-8'}" /> {if $params.errors.title} <p class="error-message">件名を入力してください。</p> {/if} </dd> <dt>お問い合わせ内容</dt> <dd> <textarea name="content" cols="60" rows="5"> {$params.content|escape:'html':'UTF-8'} </textarea> {if $params.errors.content} <p class="error-message">お問い合わせ内容を入力してください。</p> {/if} </dd> </dl> <input type="submit" value="送信する" /> </form> ★template.tpl <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>問い合わせフォーム</title> <style type="text/css"> {literal} .error-message{ margin:5px; font-size:80%; color:red; } {/literal} </style> </head> <body> <h1>問い合わせフォーム</h1> {include file=$content_tpl params=$params} </body> </html> ★common.php <?php define( 'SMARTY_DIR', 'C:/xampp\php/smarty/libs/' ); require_once( SMARTY_DIR .'Smarty.class.php' ); // Smartyオブジェクト取得 function & getSmartyObj() { static $smarty = null; if( is_null( $smarty ) ){ $smarty = new Smarty(); $smarty->template_dir = 'C:/xampp/php/smarty/templates/'; $smarty->compile_dir = 'C:/xampp/php/smarty/templates_c/'; $smarty->config_dir = 'C:/xampp/php/smarty/configs/'; $smarty->cache_dir = 'C:/xampp/php/smarty/cache/'; } return $smarty; } ?>

    • ベストアンサー
    • PHP
  • SmartyでMySQLに登録したテンプレートを使用するには?

    現在、Smartyを使用してブログを作成しようとしています。 テンプレートファイル(htmlソース)をMySQLに登録し、 これを呼び出して出力する方法を教えてください。 ※各ユーザーでレイアウトを変更するため Smartyマニュアルの「テンプレートリソース」等を確認しましたが、 なかなかうまく表示されません。 http://smarty.php.net/manual/ja/template.resources.php MySQLに「template」フィールド作成し、ここにHTMLソースを記述しています。 試した方法は 1.display時に「template」フィールドを呼び出し ×変数が呼び出されない 2.custom.tplを作成し、「template」フィールドをecho。そしてdisplay ×変数がそのまま出力 3.「テンプレートリソース」の利用 ×うまく表示されない クラス「SQL」を作成しないといけない? サンプルや他に方法が記載されているサイトがあれば教えてください。

    • 締切済み
    • PHP
  • QuickFormのテキストボックス($form->addElemen

    QuickFormのテキストボックス($form->addElement('text'~)を使っての郵便番号検索をしたいです。 郵便番号の入力欄のテキストボックスに郵便番号を入力してエンターを押した場合、郵便番号の検索処理を実行したいのです。 ちなみに、フォームに郵便番号入力欄のテキストボックス($form->addElement('text'~)と郵便番号検索処理を実行するボタンを用意して、 テキストボックスに郵便番号を入力した状態で実行ボタンを押すと郵便番号を検索して住所を取得することはできています。 質問をまとめますと、「郵便番号の入力欄のテキストボックスにカーソルがある状態でエンターを押した場合に既存の処理を実行する方法」があれば教えて下さい。 osはwindows vistaです。 php5を使用しています。 どんなに調べても分からないので、すがる思いで質問しています。 皆様、どうかよろしくお願い致します。

    • ベストアンサー
    • PHP
  • HTML5メールフォームの作り方

    お世話になります。HTML5のテンプレートを使用してメールフォームを作成しようとしておりますが、なかなかうまくいきません。action=""にメールアドレスを入れてみましたが、できませんでした。どなたかお分かりの方いらっしゃいましたら、どうかよろしくお願い致します。 <form id="contact" action="contact.html" method="post"> <div class="form_settings"> <p><span>Name</span><input class="contact" type="text" name="your_name" value="" /></p> <p><span>Email Address</span><input class="contact" type="text" name="your_email" value="" /></p> <p><span>Message</span><textarea class="contact textarea" rows="5" cols="50" name="your_message"></textarea></p> <p style="padding-top: 15px"><span>&nbsp;</span><input class="submit" type="submit" name="contact_submitted" value="send" /></p> </div> </form>

    • ベストアンサー
    • HTML
  • 【HTML5】selectにrequierd

    HTML5でformのグループ化されたselectを必須にしたいと思い、 下記のようにrequiredを記述しました。 <select name="sample[]" required> <option value="">--</option> <optgroup label="カテゴリA"> <option value="1">選択肢1</option> <option value="2">選択肢2</option> </optgroup> <optgroup label="カテゴリB"> <option value="3">選択肢3</option> </optgroup> </select> そうすると、選択肢1を選択していても「必須項目です」と表示され、フォームが送信できません。 valueの値が1だと選択済として扱われないのでしょうか。 optgroupをなくすと選択肢1を選択した状態で送信できました。 valueの値は1で送信したいのですが、可能でしょうか。

専門家に質問してみよう