チェックボックスを配列指定した場合の初期値

2008/04/26 | HTML_QuickForm2

HTML_QuickForm2でも前バージョンと同様に、チェックボックスで送られてくる際のvalue値は1だ。これは「一つのチェックボックスが一つの設問を構成する」という前提で作られているためだと思う(例えば「○○が必要な場合にはチェック」というような感じ)。「当てはまるものすべてにチェックしてください」みたいな設問への配慮がないのはなぜだろう。いつも疑問に思う。

いわゆる「多岐選択」でチェックボックスを使うときはこんな具合に指定する。

$element[]=$myForm->addElement(‘checkbox’,’q1[a]’,NULL,array(‘content’=>’a’));
$element[]=$myForm->addElement(‘checkbox’,’q1[b]’,NULL,array(‘content’=>’b’));
$element[]=$myForm->addElement(‘checkbox’,’q1′,NULL,array(‘content’=>’c’));

name属性が入るべきところにq1[a]という具合に配列っぽく記載する。もちろんこの記述でフォームからデータが送られてくると、値は配列となって送られてくる。

上記のような場合のデフォルト値の設定は配列として与えてやることになる。

$myForm->addDataSource(
  new HTML_QuickForm2_DataSource_Array(
    array(
      ‘q1’=>array(‘a’=>1,’b’=>1),
      )
    )
  );

少し、慣れてきたかな。

デフォルト値の設定

2008/04/24 | HTML_QuickForm2

HTML_QuickForm2は、基本的には前バージョン(HTML_QuickForm)をPHP5のE_STRICTに対応させてリライトしてあるとのことであったが、メソッドで変更とかもあるようだ。まぁ「まだアルファ版だから」なのかもしれないけれど。

新バージョンで、フォーム要素にデフォルト値を設定する際、前バージョンで使っていたsetDefaultsメソッドは使えない(というか、このメソッドは新バージョンでは存在していない)。HTML_QuickForm2での記述はこうだ。

$myForm=& new HTML_QuickForm2(‘myForm’);
$myForm->addElement(‘text’,’q1′);
$myForm->addDataSource(
    new HTML_QuickForm2_DataSource_Array(
        array(
            ‘q1’=>’php’,
          )
      )
  );

q1という名前のテキストボックスを作成して、デフォルト値として「php」と表示させる例だ。以前であれば、このように記述していた。

$myForm->>setDefaults(array(‘q1’=>’php’));

お手軽でよかった。
新バージョンでの記述を見るとsetDefaultsメソッドから
addDataSourceメソッドに変更になっている。その引数はHTML_QuickForm2_DataSource_Arrayオブジェクトになり、さらにそのオブジェクトのコンストラクタに引数としてデフォルト値を渡す、という具合になっている。

別にこれはこれでいいのだが、「PHP5対応のためのリライト」という観点で提供されるのであれば、非推奨でいい(将来的になくなってもいい)のでsetDefaultsメソッドが用意されるべきだと思う。

まぁ「他人の土俵で相撲を取っている」ようなものだから理想論だけ言ってみた。

HTML_QuickForm2を読む

2007/07/17 | HTML_QuickForm2

PHP4にさよならを言わなくてはならなくなった今、本格的にPHP5に取り組まなくてはいけなくなった。いちおうcakePHPで開発をすすめていく予定にしている。cakePHP曰く「他のライブラリを一切必要としない」という高尚な思想はすばらしいとは思うが、それはイコール「cakePHPにないことは自前でどうぞ」ということだ。私は自前でプログラムを書くのは大嫌い!。
データベース関連はcakePHPで用意されているものを使うとして、そのほかの要素はやっぱりPEARで処理したい(ページングを実現するライブラリがないようで、decorate.phpに少しあるくらいだから、DBも要検討だが)。まずはHTML_QuickForm2を読んでみることにした。自分にとってのウェブプログラミングの3大要素は「データベース」「フォーム」「認証」なので、一つずつクリアしていきたい。認証はPEARのAuthかLiveUser。LiveUserはいろいろ出来るようだが、一度も使ったことがないので、多分Authから始める。

HTML_QuickForm2。読もうと試みたけど、見たことがないのがいろいろ出てくる。必要に駆られてPHP5も多少覗いてはいたのだが・・・理解に苦しむ記述が・・・(っていうかimplementsって何?)。
HTML_QuickForm2自体はそれほど難しくなさそうな感じだ。pear.php.netで紹介されているとおり、HTML_QuickFormをPHP5用に書き直しただけ、という印象だ。見たことのある関数がそこかしこにある。
オブジェクトの生成も、

$myForm=& new HTML_QuickForm2(‘myForm’);

みたいな感じでいけそう(未検証)。少し安心した。
まずはPHP5の環境を用意して諸々テストしていくとしよう。

HTML_QuickForm suspended

2007/07/10 | HTML_QuickForm

とうとうHTML_QuickFormのメンテナンスが終了してしまった(正確に言うと追加開発が終わっただけでバグフィックスは継続しておこなわれる模様)。
DBパッケージと同様に、代替モジュールの利用を促すメッセージがpear.php.netに記述されている。
まぁ、当然といえば当然だ。PHP5で使うと、エラーが頻発するような現状で、老い先短いだろうということはよくわかっていたから。しかしひどいのは、代替モジュールである「HTML_QuickForm2」は、まだアルファ版(バージョン0.1.0)ということだ。「アルファ版を原稿バージョンの代わりに使え」というタコなメッセージには閉口してしまう・・・。

HTML_QuickForm2は、HTML_QuickFormをPHP5で使用した際にエラーが頻発したのを解決するために書き直されたパッケージである、とのこと。ちなみにドキュメントはまだまだ・・・エンドユーザ向けのドキュメントはまだ提供されていない。
APIドキュメントを少し確認してみたところ、ちょっと気になっていた「ファイル操作」の部分はまだ残っているようだ。HTML_QuickFormでは「将来的になくなるかも・・・」ということだったので、どうなることかと思っていたが、どうも引き継がれていくようだ。

ドキュメントが充実して、ベータ版でも出ない限りは、当面HTML_QuickForm2を使うことはないだろうけど、注目しておく必要があるパッケージであることには間違いない。このパッケージが正式リリースされたら、PHP5への乗換え時だ、と思う(個人的に)。

しかしこの先、新しい仕様が出てくるような気がする。現状ブラウザからはフォームからデータを送信して、フォーム専用の受け口(プログラム)を用意するわけだが、そのうち全てXML-RPCだけで全てまかなえそうな気もしてしまうのだ(もしくはSOAPでもいい)。

postならpostだけ、getならgetだけ

2006/12/06 | HTML_QuickForm

いつも便利に使っているHTML_QuickForm。
しかし特殊なことをしようとすると、うまくいかないことがある(もちろんいろいろ回避する方法はある)。

QuickFormのオブジェクトを生成する際に、以下のようにpostを指定した。
$myForm=& HTML_QuickForm(‘myForm’,’post’);

ここで例えばエレメントを以下のように追加した。
$myForm->addElement(‘text’,’myTextBox’,’Input text’);

このように記述したphpスクリプトに対して、以下のクエリをつけてアクセスしてみた(もちろんgetで)。
?myTextBox=abcd

いちおうテキストボックスには「abcd」という値が入って欲しいと思っていたのだが、そううまくはいかなかった。結果としてわかったことは・・・。
「postならpostで渡った値だけ、getならgetで渡った値だけ!」

当たり前といえば当たり前なんだけど・・・。少しだけはまりました。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net