PRGパターン on Ficusその2
動的に書き換える対象 - Paradigm Shift Designの続き
とりあえず,Formでリダイレクトするように仕込んでみた.
<form action="?test.TestTwo" method="post"> <input type="text" name="testOne" value="{$testOne|default:"TestOneDef"}"/> <input type="text" name="testTwo" value="{$testTwo|default:"TestTwoDef"}"/> <input type="text" name="testThree.id" value="{$testThree->id()|default:"TestThree.id"}"/> <input type="submit"/> </form>
というテンプレートを処理するとき,
<form action="?Test.TestOne" method="post"> <input type="hidden" name="pages.redirect" value="?test.TestTwo" /> <input type="hidden" name="pages.redirect.mode" value="default" /> <input type="text" name="testOne" value="1"/> <input type="text" name="testTwo" value="TestTwoDef"/> <input type="text" name="testThree.id" value="100"/> <input type="submit"/> </form>
こういう出力をする.
一応処理の流れを書いておくと,
- 最初のページを表示
- diconでFicus_SmartyにaddResourceする(Ficus_PageSmartyResource)
- Ficus_PageSmartyでsearchして見つかったときに,PageSmartyResourceにaddtemplate
- renderが呼ばれたタイミングで,上で読み込んだテンプレートをconvert
- submitボタンが押下される
- 値のvalidation
- test.TestOneのdo[モード名]Redirectがあれば呼び出し
- convert時に取得した次のページへリダイレクト
という風になり,
- test.TestOnePage::doDefault
- test.TestOnePage::doDefaultRedirect
- test.TestTwoPage::doDefault
のように遷移する.
一応PRG?
で,なんとなく遅い.
<?php header("Location :http://mogemoge.com/"); ?>
が遅いのかなぁ.他のページは,そんなに違和感ないんだけどなぁ.
追記,キャッシュがオフになっていました.
[ficus] ficus.cache.enable="1" ficus.cache.engine="zend" ficus.cache.config="c:\cygwin\home\kent\www\core/conf/zend_cache.ini" ficus.cache.lifetime = "7200" ficus.cache.frontend = "Core" ficus.cache.backend = "File" ficus.cache.dir = "c:\cygwin\home\kent\www\core/etc/ficus"
が0に.