TAKAHASHI Kunihiko
takah****@knosp*****
2005年 10月 13日 (木) 02:11:18 JST
高橋(kunit)です。 On Thu, 13 Oct 2005 00:51:58 +0900 (JST) あ ああ <gulic****@yahoo*****> wrote: > はじめまして、gulic です。 > はじめまして。これからもよろしくお願いします。 > mapleを使いはじめたのですが、smarty関連で分からない事が > ありますので質問させて下さい。 > > sample 等を見たのですが、 smartyに変数を assign している > 所が見当たりませんでした。 > > execute メソッドの中で行うのかなと思いましたが、どのよう > にしてsmartyにアクセスするのでしょうか? > Mapleでは「いちいちテンプレートエンジンを初期化するコードを 書くのめんどくさくない?」というポリシーでそのあたりを隠蔽 しちゃってます。 具体的には以下のような形です。 - Viewフィルタを使うことにより、Smartyの初期化を行い、 テンプレートからActionの関数を呼べるようにする (Actionに出力したい値を返却する関数を準備する) ただし、そうはいってもSmartyに対して assign するという方法も 行いたいという場合には、以下のようなやり方になると思います。 (このやり方でも間接的に assign することにはなります) (1) 独自のSmarty制御クラスを準備する 標準のSmarty制御クラス(maple/core/Smarty4Maple.class.php)を ベースに独自クラスを準備する。 (例えば、maple/core/MySmarty.class.phpのようにする) こちらで今まで行われていたような「delimiter変更」や 「pluginディレクトリ」の制御を行う。 (2) 独自のViewフィルタを準備する 標準のViewフィルタ(maple/filter/Filter_View.class.php)を元に 別フィルタをつくる。 (例えば、maple/filter/Filter_CustomView.class.phpのようにする) そのときに、標準のSmarty制御クラスの変わりに(1)で作った 独自Smarty制御クラスを使うようにする。 (3) Actionからのフックを準備 Actionで関数を準備すれば assign できるようなフックを準備する。 これは(1)(2)でつくったクラスを修正することによって実現する。 どのようなものをいれるかは以前熊倉さんのblogでかかれたものが 大変参考になると思います。 http://hatotech.org/kumatch/archives/000442.html (4) maple.iniの記述を変更 普段は[View]セクションとしていたものを[CustomView]にする。 そうすることにより、標準のViewフィルタではなくて、独自の Viewフィルタが使用される。 --- ここから [CustomView] success = xxx/yyy/zzzz/index.html --- ここまで こんな感じで実現できると思いますが、お望みのものになりますでしょうか。 Mapleで準備している各種Filterとかは拡張したり差し替えたりしていって 使いやすいものにしていってもらえればいいかなと思います。 (といっても、Filter周りのドキュメントがなくて・・・ってのはあるで しょうね。がんばります) もし、すごい便利なものができたぞーってことになれば、フィードバック していただければありがたいです。 --- TAKAHASHI Kunihiko KNOSPEAR Inc.