在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的方式,通过配置加载进来实现。