spanstyle::monologでタグ「PEAR」が付けられているもの

PHP初のデザパタ本、「PHPによるデザインパターン入門」。プロヘッショナルだったらPEARの入門書、「PEAR入門 PHP標準ライブラリを極める!」、最新動向満載の「超・極める! PHP」と一緒に買うべし。

ユーザ中心ウェブサイト戦略 仮説検証アプローチによるユーザビリティサイエンスの実践」と「デザイン・ルールズ デザインをはじめる前に知っておきたいこと」は、プログラマがデザイナ領域を侵食するためのアプローチとして良書。左脳を使いすぎたら「梯剛之 プレイズ・モーツァルト」で右脳も使う。

あと、商売人としての基本は「図解 鈴木敏文の「商売の人間学」―なぜ、買うのか売れるのか」で学ぶこと。

PHP-MLでも議論されていたけど、バウンスメール処理をPHPでやる場合、どうやったらできるのか考えてみた。

前回はHTML_QuickFormの基礎を勉強したので、今回は応用。Smartyとの連携ってのをやってみる。


********************************************************************************
大きな流れ
********************************************************************************
addElement:オブジェクト設定

addRule:検証ルール設定

applyFilter:フィルタ設定。trimしたりとか

(やっぱここでやるんでしょ?)
setDefaults:デフォルト値設定
setConstants:定数設定(上書きできない値。使いどころがイメージできない...)

validate:検証実施

freeze:凍結実施(検証がOKだったら)

Smartyにデータを渡して表示

HTML_QuickForm利用の手引き
http://www.is.titech.ac.jp/~yanagis0/kei/quickform.html

を参考に、まずはPEARについているサンプルソースを見てみる。場所はPEARディレクトリ内の「doc/HTML_QuickForm/docs/renderers/SmartyStatic_example.php」。SmartyDynamic_example.phpもある。スタティックとダイナミックでどう違うかはよくわからんが、まずはスタティックの方のソースを追ってみることに。非Smartyとの違いは、99行目「// setup a template object」以降の処理だけっぽい。

validate&freeze以降の流れはこんな感じ。

Smartyオブジェクト生成

生成したSmartyを渡しながらrendererオブジェクト生成

初期設定(必須とかエラーとか。なんかよくわからん)

HTML_QuickFormオブジェクトにrendererオブジェクトを渡す(accept())

Smartyオブジェクトにテンプレート変数を登録

Smarty->display();

なのだそうな。

テンプレート変数については、例えば

$form->addElement('header', 'MyHeader', 'QuickFormのテスト');
$form->addElement('text', 'name', 'あなたのお名前は?');
$form->addElement('submit', 'btnSubmit', '送信');
//(略)
$tmpl->assign('form', $renderer->toArray());

と登録すれば、テンプレートの方からは{$form.header.MyHeader}で「QuickFormのテスト」にアクセスできる。ただしこれはヘッダに限った話で、その他のフォームオブジェクトへのアクセス方法としては{$form.name.label}で「あなたのお名前は?」に、{$form.name.html}でフォームオブジェクトのHTMLにアクセスできる模様。

ただしsubmitボタンについては、{$form.btnSubmit.label}とやっても「送信」とは表示されない。resetボタンも同様({$form.btnSubmit.value}か?)。

一番重要な<form>タグへ設定する属性値へは{$form.attributes}でアクセスできる。つまり<form {$form.attributes}>と書けばいいみたい。まあとにかくやってみる。

HTML_QuickForm からの脱却」とか「QF Haters」とかを読む限りでは、MojaviやMapleなどのMVCフレームワークを使いこなせる人にとって、HTML_QuickFormはもはや使い勝手の悪いモノでしかないそうです(Mapleって初めて知りますた。デザイナさんもプロジェクトに参加してるってすばらしい)。

でも、僕は最近ようやっとSmartyが使えるようになった程度だし、PEARもDBとAuthとPagerくらいしか使ったことないし、第一フレームワークがちんぷんかんぷんなので(決定打)、ある意味上級者になるための踏み絵と思いながらHTML_QuickFormをベンキョしてみようと思いますです。最終目標はHTML_Quickform+Smartyの独自レンダリング。入力→確認→完了の遷移ってHTML_Quickform_Controller使わないとムリかしら?

で、とりあえず「html_quickform」のググり一覧をかたっぱしから見ながらやってみました。以下、テストコードにづらづら書いた自分用コメントもまとめて載せます。

目標:

1.PHPでログインさせる(データベース認証)

2.ログインしている人にのみマイページを表示する

3.ログインしている人にのみPDFファイルをアクセス可能にする

1、2はOK。マズいのは3だった。今の仕様だと、直リンクされれば見えてしまう。PDFディレクトリごと.htaccessで制限すればできるかな?と思ってたけど、Basic認証とPHPでの認証(PEARのAuth)は別モノらしく、いくらPHPでログイン済みだとしても、Basic認証がでてしまうようだ。ううむ。仕方ないからPDFをDBに登録しといて、PDFへアクセスするのにPHPを使うのが簡単な解決法である気がする。そのほかではRefererを参照して同一ドメインからならOKという扱いにするつーのも考えたけど、ノートン先生とか入ってたらRefererを返してくれないからボツと。ウェブ開発は、Win32アプリ開発とはまた違う難しさがありんす。でも、やっぱりウェブ開発の方が楽しいな。:)

PEAR::Auth

|

PHPのPEAR::Authモジュールで四苦八苦しとります。今BellWoodとメッセンジャーで相談中。でも二人ともPHPに慣れてないので、進んでるような、進んでないような。ああ、セッション管理は難しいなあ。

このサイトについて

自分用リンク

Powered by Movable Type 4.22-ja

PR

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • swfobject.png
  • symfony.png
  • doclean.png
  • clean.png
  • twitterui.png
  • php5.2.8-warning.png
  • pagesaver.png
  • analytics.png
  • Munsell Hue Test.png
  • Munsell Hue Test0.png