在controller里面有一个 render 函数
$this->render($this->action->id,['xxx'=>'3333']);
也就是通过一个render函数,把view文件和对应的参数数组传递进去,然后生成对应的html返回,这是怎么实现的呢?
这里用到的是php 的ob系列函数:
public function renderPhpFile($_file_, $_params_ = []) { ob_start(); ob_implicit_flush(false); extract($_params_, EXTR_OVERWRITE); require($_file_); return ob_get_clean(); }
如果我们想嵌套,也就是一个ob函数里面有其他的ob函数,可以这样:
public function dd($i){ $i--; if($i > 0){ ob_start(); echo "test".$i; $str = ob_get_clean(); return $str.$this->dd($i); }else{ return 22; } } public function actionIndex(){ ob_start(); echo "Hellon/"; //输出 echo $this->dd(6); ob_end_flush();//输出全部内容到浏览器 exit; }
这样就可以吧一些东西做成tab html,譬如侧栏的联系我们,newsletter,等一些div框,就可以做成tab的方式,通过配置加载进来实现。