多个方法同时输出同一个模板的问题

#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