[Maple-user: 298] Re: ActiveGateway最新版について

Zurück zum Archiv-Index

kazunobu ichihashi bobch****@gmail*****
2006年 6月 21日 (水) 09:39:19 JST


市橋です。

携帯対応の方です。
これは一つのアクションでテンプレートが複数ある場合の対応で
恐らくは携帯もそうですが、国際化の対応も同じだと思ってます。

一つの方法としては、Viewフィルタを改造して
アクションクラスの返値で直接テンプレートを指定できるようにすることです。

参考
http://kunit.jp/maple/wiki/index.php?%A5%B3%A5%E1%A5%F3%A5%C8%A1%A6%A4%B4%CD%D7%CB%BE#s570a650

上記は配列になっていますが、私個人的には

$template = $this->getAttribute($view);
の部分を下記に変更しています。
if (is_string($view) && strpos(':', $view) !== false) {
    $template = $view;
} else {
    $template = $this->getAttribute($view);
}
ただ、この場合は通常のテンプレート指定に「:」が使用できないデメリットがあります。

上記が可能にした上で、アクション内でテンプレートを決定するロジックを
入れるというイメージです。

ただ、この方式だとテンプレート決定ロジックがほぼ固定の場合、
全アクションにテンプレート決定ロジックを適用するのが面倒になります。

この場合は、Viewフィルタに抽象メソッド(decideTemplate)を予め入れておいて
テンプレートファイル名の決定はこのメソッドを使うようにしておく。
で、Viewフィルタを継承したクラスでテンプレート決定ロジックをメソッドに実装して
Viewフィルタとして使用する。
というのはどうでしょうか?

class Filter_View extends Filter
{
                :
    function execute()
    {
                :
        if ($view != "") {
            $template = $this->getAttribute($view);
            $template = $this->_decideTemplate($template);
        }
                :
    }
    function _decideTemplate($template)
    {
        return $template;
    }
}

define('LOCALE_STR', 'ja');
class Filter_ViewI18n extends Filter_View
{
    function _decideTemplate($template)
    {
        // テンプレートファイル指定でない場合はそのまま返す
        if (is_string($template) && strpos($template, ':') !== false) {
            return $template;
        }
        return $template . LOCALE_STR;
    }
}

ぱっと思いついたことなので、間違いがあるかもしれません。。。


06/06/21 に 木内智史<samur****@don-q*****> さんは書きました:
> お世話になっております。木内です。
> 前回の「携帯対応」については、
> Smarty4Maple内で、
> $Device = DeviceFactory::getDevice();
> といった感じで端末インスタンスを取得し、あとは端末に適したテンプレートを
> fetchという形に収まりました。
> みなさんはどのように対応しているのでしょうか?
> よろしければ、コメントをいただければと思います。

-- 
Kazunobu Ichihashi(bobchin) <<bobch****@gmail*****>>
Wiki http://bobchin.ddo.jp/wiki/
Diary http://d.hatena.ne.jp/bobchin/



Maple-user メーリングリストの案内
Zurück zum Archiv-Index