#1 cystone
controllor1
class ctrl1 extends spController{
function action1(){
.....$this->display("main.html");
}
}
controllor2
class ctrl2 extends spController{
function action2(){
.....$this->display("main.html");
}
}
//smarty模板
main.html
... 需要调用 action2()
问题:
1、如何在smarty模板中调用某个控制器的方法?
2、如果该模板的数据来源涉及多个方法,那么在方法中如何实时传入数据到smarty模板?
2010-02-02 13:28:19
#2 jake
控制器是一种语言结构,不能把他们理解成普通的类。所以在smarty中虽然有调用对象方法的方式,但是不推荐。解决楼主的问题,可以这样做:
1. ctrl2的action2中不用display,而是$this->getView()->fetch("xx"); ,调用smarty对象,使用fetch函数来获取HTML,而不是显示HTML。
2. 在原来的控制器里面,import那个控制器(一定要,因为import是不会搜索控制器目录的。这里的用法是impor(APP_PATH."/controller/ctrl2.php"))。再用spClass("ctrl2")->action2()就可以获取。
然后在$this->page2 = spClass("ctrl2")->action2();
<{$page2}>就可以显示了
2010-02-02 15:52:25