Paradigm Shift Design

ISHITOYA Kentaro's blog.

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>

こういう出力をする.


一応処理の流れを書いておくと,

  1. 最初のページを表示
    1. diconでFicus_SmartyにaddResourceする(Ficus_PageSmartyResource)
    2. Ficus_PageSmartyでsearchして見つかったときに,PageSmartyResourceにaddtemplate
    3. renderが呼ばれたタイミングで,上で読み込んだテンプレートをconvert
  2. submitボタンが押下される
    1. 値のvalidation
    2. test.TestOneのdo[モード名]Redirectがあれば呼び出し
    3. convert時に取得した次のページへリダイレクト

という風になり,

  1. test.TestOnePage::doDefault
  2. test.TestOnePage::doDefaultRedirect
  3. 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に.