毎日漫然な愚者

少ない時間で挑むGNO2とモンハン日記ばかり?

引っ越しました!

2010-05-21 20:59:58 | Weblog
と、いってもブログがですがw
いつでも思いつき


symfony マルチテキストインプット

2010-05-20 08:13:05 | PHP
symfony マルチテキストインプット

備忘録

電話番号や郵便番号のフォームが必要になり、
sumfony1.4用のマルチインプットウィジェットとバリデータを作成したので、
以下に置いときます。

myValidatorMultiInput.class
myWidgetFormMultiInput.class
※ダウンロードできない場合は「開く」をクリックしてください。

やっつけで作ったので使い勝手はイマイチかもしれないけど、
要件は満たしているはず。

気に入らなかったら勝手に直してください。

symfony sfForm使用時にlabelがエスケープされない件

2010-05-07 08:20:08 | PHP
備忘録。

symfony1.4.3においてviewでformオブジェクトを利用する場合、
以下の点に注意する必要がある。

1、renderLabel()で生成されるラベル文字列はエスケープされない
2、getValue()の戻り値はエスケープされない

具体的にはこんなformがあったとして・・・

■Formクラス

class hogeForm extends sfForm
{
 public function configure()
 {
  $choices = array('hoge','fuga<input>');
  $this->widgetSchema['choiceHoge'] = new sfWidgetFormmSelectRadio(array(
    'label'   => 'choiceHoge',
    'choices'  => $choices,
  ));
  $this->validatorSchema['choiceHoge'] = new sfValidatorChoice(array(
    'choices' => array_keys($choices),
  ));

  $this->widgetSchema['inputHoge'] = new sfWidgetFormInput(array(
    'label' => '<input>Hoge'
  ));
  $this->validatorSchema['inputHoge'] = new sfValidatorString(array(
    'max_length' => 10,
  ));
  
 }
}


■ラジオボタン(チェックボックス)のオプションラベルはエスケープされない
上記formをviewで以下のように書くと・・・
■viewクラス

<?php echo $form ?>

見事にエスケープされずにinputボックスが表示されてしまうので以下のようにして、
あらかじめsfWidget::escapeOnceでエスケープします。
■ラベルのエスケープ漏れ対策

  $choices = array('hoge',sfWidget::escapeOnce('fuga<input>'));
  $this->widgetSchema['choiceHoge'] = new sfWidgetFormmSelectRadio(array(
    'label'   => 'choiceHoge',
    'choices'  => $choices,
  ));

…………

  $this->widgetSchema['inputHoge'] = new sfWidgetFormInput(array(
    'label' => sfWidget::escapeOnce('<input>Hoge')
  ));


■getValue()の戻り値はエスケープされない
これは、上記formの入力値を次のactionで利用するときに発生する問題。
■例
1、入力画面でinputフォームに<input>と入力
2、確認画面で入力内容を再表示するためにformオブジェクトを再利用
3、formオブジェクトから入力値を取得して表示する
  →ここで$form->getValue('inputHoge')する

対策が各パラメータをエスケープするしかないので、、
確認画面で入力値を再表示するときは、
actionでview変数にあらかじめセットするしたほうがいい。

知ってれば当然なのかもしれないけど、
「formオブジェクトイラネ」というのもわかる気がする…

『もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら』を読みました。

2010-03-27 11:20:58 | 読書感想
もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら
岩崎 夏海
ダイヤモンド社

このアイテムの詳細を見る

ベストセラーというのに乗せられて読みました。

パッケージは萌え要素が強いけど、
中身は「マネジメント」のHowTo本で、
青春小説なのは最後の1章だけと思ってもあまり間違いはないかもしれませんw

以下は個人的な感想。

■目的
 いきなり「マネジメント」を読むのはハードルが高いので、
 先にこの本を通して概要を知る
■結果・感想
 「マネジメント」に必須なものが才能ではなく真摯さであること、
 組織における顧客が誰であるかを定める際に大事な考え方、
 組織及び所属構成員における目標設定の考え方、
 人材こそ貴重な資源であることとそれの生かしかた、
 組織の活動における社会貢献の重要性、
 …等々、多くのことを知ることができた。

正直、読む前はナメてたが、
読んでみると自分の知りたいこととその活用例が非常にわかりやすくに書いてあり、
支払った以上の「感動」を得ることができました^^

それと同時に、
顧客に感動を与えることがどれだけ重要であるかを実体験として学ぶことができ、
仕事をこなす上でも考えさせられる1冊でした。

…俺ができる、人に感動を与えられることって何だろうなぁ^^;

PHP preg関数でのバックスラッシュについて

2010-03-21 13:14:53 | PHP
preg関数でバックスラッシュを処理する際に軽くはまったので備忘録。


■やりたい事

'.()/\'にバックスラッシュを追加

■perlの場合

$target =~ s/([.()\/\\])/\\$1/

■PHPの場合

$target = preg_replace('/([.()\/\\\\])/','\\\\$1',$target)



なににはまったのかというと、
\\\\とバックスラッシュが4つ必要なこと。

なんでこんな構文なのかについては、
ここで知ったのだが、
簡単にいうと、
PHPが文字列リテラル→正規表現の順で2重評価をしているため
ということ。

…確かにバッドノウハウ(BK)だわ。