コード例 #1
0
 /**
  * 渲染指定的视图文件
  *
  * 渲染时,视图要使用的数据保存在控件的 $_view 属性中。
  *
  * @param string $filename
  * @param array $more_vars
  *
  * @return string
  */
 protected function _fetchView($filename, array $more_vars = null)
 {
     $vars = $this->_view;
     $vars['_ctx'] = $this->_context;
     $vars['_CTL_ID'] = $this->id();
     $vars['_BASE_DIR'] = $this->_context->baseDir();
     $vars['_BASE_URI'] = $this->_context->baseUri();
     $vars['_REQUEST_URI'] = $this->_context->requestUri();
     if (is_array($more_vars)) {
         $vars = array_merge($vars, $more_vars);
     }
     //if (is_null($this->_render))
     //{
     $this->_render = new $this->_render_class(dirname($filename));
     //}
     $this->_render->vars($vars);
     $extname = pathinfo($filename, PATHINFO_EXTENSION);
     $pextname = $this->_render->extname();
     if (empty($extname) || $extname != $pextname && !empty($pextname)) {
         $filename .= '.' . ($pextname ? $pextname : 'php');
     }
     return $this->_render->parse($filename);
 }
コード例 #2
0
 /**
  * 渲染指定的视图文件
  *
  * 渲染时,视图要使用的数据保存在控件的 $_view 属性中。
  *
  * @param string $filename
  * @param array $more_vars
  *
  * @return string
  */
 protected function _fetchView($filename, array $more_vars = null)
 {
     $vars = $this->_view;
     /**
      * TODO! 全局变量应该放到 控件抽象类 _before_render() 中
      */
     $vars['_ctx'] = $this->_context;
     $vars['_CTL_ID'] = $this->id();
     $vars['_BASE_DIR'] = $this->_context->baseDir();
     $vars['_BASE_URI'] = $this->_context->baseUri();
     $vars['_REQUEST_URI'] = $this->_context->requestUri();
     //
     if (is_array($more_vars)) {
         $vars = array_merge($vars, $more_vars);
     }
     if (strpos($filename, 'view:') === 0) {
         $filename = Q::ini('app_config/APP_DIR') . DS . 'view' . DS . ltrim(substr($filename, 5), '/\\');
     } elseif ($filename[0] != DS && strpos($filename, ':') === false) {
         $_class_name = strtolower(get_class($this));
         $_sep = explode('_', $_class_name);
         array_pop($_sep);
         $filename = Q::ini('app_config/APP_DIR') . DS . implode($_sep, DS) . DS . ltrim($filename, '/\\');
     }
     if (is_null($this->_render)) {
         $this->_render = new $this->_render_class(dirname($filename));
     } else {
         // TODO! 假如共享视图解析器实例,需在此做必要处理
     }
     $this->_render->assign($vars);
     $extname = pathinfo($filename, PATHINFO_EXTENSION);
     $pextname = $this->_render->extname();
     if (empty($extname) || $extname != $pextname && !empty($pextname)) {
         $filename .= '.' . ($pextname ? $pextname : 'php');
     }
     return $this->_render->parse($filename);
 }