checkboxの値指定

2006/02/23 | HTML_QuickForm

HTML_QuickFormで普通にcheckboxを作成すると、そのvalue値は全て「1」になる。これを回避するための(value値を指定する)スクリプトは以下の通り($resultがPearDBのクエリの結果の場合)。

$i=0;
$tmpArray=array();
while($row=$result->fetchRow()){
 $tmpCheckBox=& HTML_QuickForm::createElement(‘checkbox’);
 $tmpCheckBox->setName($i);
 $tmpCheckBox->setText($row[‘name’]);
 $tmpCheckBox->updateAttributes(array(‘value’=>$row[‘id’]));
 $tmpArray[]=$tmpCheckBox;
 $i++;
}
$myForm->addGroup($tmpArray,’formCheckBox’,’CheckBox’,’ ‘);

これでvalue値を任意のものにできる。

Read the rest of this entry »

モジュール単位のフィルタ

2006/02/09 | mojavi2

GlobalFilterに登録しておくと全モジュールに対して共通した処理を施せるが、モジュール毎に共通処理を含むことができるmoduleFilterという機能もある。これについてもまともに解説してあるページはない。
ようやくわかりやすく解説してあるページを見つけることができ、理解できたのでここに掲載(参照元にトラックバック:感謝)。

□moduleFilterの設置場所:
各モジュールのディレクトリ直下には「actions」「views」「templates」などのディレクトリが存在するが、それらのディレクトリと同じ階層に記述したファイルを設置する。

□記述・設置方法:
ファイル名は「(モジュール名)FilterList.class.php」とし、記述方法はGlobalFilterと同様、FilterListを継承して記述する。
このファイルを設置するだけで、mojaviは自動的にファイルの有無を確認し、存在すれば自動的に取り込んで実行する、ということらしい。Filterの適用順序は以前に述べたとおり。

Filterの適用について

2006/02/08 | mojavi2

フィルターの雛形に続き、フィルター適用順序(というかmojaviの挙動)に関する比較的わかりやすい説明が先ほど同様の2chフレームワークスレにあった(以下引用)。


個々のフィルタには前処理・後処理という2段階の実行順序があって、登録した順に前処理が全て実行されてから、今度は逆順に後処理が実行される。

Actionの実行部分もフィルタの一種として扱われていて(ExecutionFilter)、全てのフィルタの登録後に登録されている。
Viewの実行(View::execute())はExecutionFilterの中で実行されている。

結果、登録順に1,2…の番号を付けた時に、
1. GlobalFilterのpre-filter1,pre-filter2…を実行
2. moduleFilterのpre-filter1,pre-filter2…を実行
3. ExecutionFilterを実行(認証や特権の判定、action処理)
4. Viewの実行
5. moduleFilterの…post-filter2,post-filter1を実行
6. GlobalFilterの…post-filter2,post-filter1を実行
という順番で処理されることになる。

mojaviのソースを読めばわかることだけど、この程度の情報がドキュメントとしてしっかり用意されているとうれしいんだけれど・・・。

Filter雛形

2006/02/08 | mojavi2

Filterの例が少なく困っていたけれど、最近はgoogleの検索で日本語サイトがぽつぽつと引っかかってくるようになった。以下はFilterクラスの雛形。引用元は2chのフレームワークスレ

<filter>.class.php
class <filter名> extends Filter{
 function execute(&$filterChain,&$controller,&$request,&$user){
  static $loaded;
  // ActionChainやAction::forwardを使った時にフィルタが複数回適用されるのを防ぐ
  if($loaded == NULL){
   $loaded = TRUE;
   //前処理フィルタ
   …
   //filter chain の次のフィルタを実行
   //pre-filterとpost-filterの分岐点
   $filterChain->execute($controller,$request,$user);
   //後処理フィルタ
   …
  }else{
   $filterChain->execute($controller,$request,$user);
  }
 }
}


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