入力規則を設定するときに

2006/04/18 | HTML_QuickForm

QuickFormでは入力規則を設定する際に、3つの方法がある。いつもよくわからなくなるのでメモ。

○addRule()
単品のエレメントに対して、規則を設定する。

○addGroupRule()
グループ化されたエレメントの個々の要素に対して、規則を設定する。それぞれの要素に対して共通の規則を設定したり、別々の規則を設定したりできる。

○addFomeRule()
フォーム内の複数の要素に対して、規則を設定する(例えば要素Aと要素Bが関連付けられている場合とか)。

ブログシステムの構築

2006/04/17 | SNS/CMS/ブログ

ブログシステムを構築したくなった。不特定多数にレンタルできるような、例えばFC2とか大手が提供しているような仕組み。
一から自分で作るほど暇ではないので、既存のものを探している。PHPとMySQLなら自分でもカスタマイズできるけど、Perlとかでもいい。とにかく機能が提供できれば。
今とりあえず目をつけたのが「nucleus」。まだあまり情報を集めてないけれど、とりあえず自分で使って見ないことには始まらなさそうな雰囲気だ。あまったドメインもあることだし、とりあえず始めたいけれど・・・暇がない。近いうちに始めたい。

mojaviとMBfpdi

2006/04/17 | mojavi2

mojaviを使って、かつPDFで出力した場合が生じたときに問題が発生した。先日作ったMBfpdiで日本語を出力しようとしたのだがエラーでうまくいかない。「なぜだろう?」といろいろ思案した結果、MBfpdiで定義(や読み込み)された変数のスコープで不具合が出るような感じ。これを何とか修正した。せっかくだからpatchをつくって、ダウンロードできるようにしておいた。
パッチ

注目のZend Framework

2006/04/17 | Zend Framework

今、PHPで最も注目すべきカテゴリの一つがコレ「Zend Framework」。PHP5の環境で最も有力視されるフレームワークだ。なんといってもZendが構築しているので大本命になることほぼ間違いなし。現状はまだα版程度なのでビジネスで使える程度ではないと思われる。
とはいってもそろそろ状況を追いかけていかないといけないと思われるので、メモを残すことにした。
とりあえず関連するページを見つけたのでメモメモ。
http://trac.ishinao.net/webxp/wiki/

Smarty関連とデータベース関連の仕組みについて解説がある。メインは別のフレームワークらしい(WEBXP)。しばらくの間、追いかけておきたいサイトだ。

別クラスで設定したルールを適用する際に・・・

2006/04/16 | HTML_QuickForm

ここのところ開発は全てmojavi + QuickForm + Smarty。単独で稼動させるスクリプトは素で書くけれど、「ウェブサイト構築」という名目で作る場合はこの組み合わせ。今まで(自作のライブラリ)よりも作業効率が5倍くらいよくなってるような気がする。

で、お題の件。基本的にmojaviでQuickFormを使う場合は専用のライブラリ(class)を作ってそれを継承し、利用している。フォームで使用するルール(入力規則)はだいたい同じようなものをサイト内で使いまわすけれど、ベースとなるクラスファイルを編集するのは美しくないような気がして、別ファイルでクラス化し、そちらを編集するようにしたかったのだが、そこで問題が発生。別ファイルで定義したルールがなぜか使用できない・・・。

独自ルールを追加するのは前にも書いたregisterRuleでできるはずなのに・・・。
$myForm->registerRule(‘ルール名’,’callback’,’使用する関数名’,’クラス名’);
で確かに登録したし、getRegisteredRules()で確かにルールが登録されていることも確認できるのに・・・。実はすごい落とし穴があった。
ルールの関数はこんなふうにつくった。
–(1)
function _customRule($values,$option){
//ルール詳細
}

ルールの登録はこんなふうに一括でできるように繰り返し処理を利用した。
–(2)
$funcArray=get_class_methods(‘QuickFormRules’);
foreach($funcArray as $funcName){
 $ruleName=substr($funcName,1);
 $myForm->registerRule($ruleName,’function’,$funcName,’QuickFormRules’);
}

登録したルールをこんなふうに呼び出した。
–(3)
$myForm->addRule(‘formItem’,’Error’,’customRule’);

これで「うまくいくはず!」と思っていたけどダメダメ。いろいろ思案してみてわかったことは・・・get_class_methods関数に問題がありました。これって「関数名を全て小文字で返す」らしい。だから希望として、ルールの名前は「customRule」としたかったのに「customrule」という名前で登録されているということ。ということで(3)をこんなふうに書き換えたら動いた。
–(3)’
$myForm->addRule(‘formItem’,’Error’,’customrule’);

「r」を大文字から小文字に変えただけ。PHPのソースを読んで修正するのもばかばかしいので「こういうものだ」という理解で進めることにした。勝手に関数名を変換してくれるなよ・・・。


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