修改fetch的获取方式

This commit is contained in:
2023-09-26 10:52:32 +08:00
parent 3b93706c74
commit 8481ddd0ac
3 changed files with 32 additions and 11 deletions

View File

@@ -61,7 +61,7 @@ class ViewBase extends ThinkView
return $this->config([
'view_suffix' => 'html',
])->getContent(function () use ($vars, $template) {
$this->engine()->fetch($template, array_merge($this->data, $vars));
return $this->engine()->fetch($template, array_merge($this->data, $vars));
});
}
@@ -77,7 +77,30 @@ class ViewBase extends ThinkView
return $this->config([
'view_suffix' => 'js',
])->getContent(function () use ($vars, $template) {
$this->engine()->fetch($template, array_merge($this->data, $vars));
return $this->engine()->fetch($template, array_merge($this->data, $vars));
});
}
/**
* 获取模板引擎渲染内容.
* @param $callback
* @return string
* @throws \Exception
*/
protected function getContent($callback): string
{
// 渲染输出
try {
$content = $callback();
} catch (\Exception $e) {
ob_end_clean();
throw $e;
}
if ($this->filter) {
$content = call_user_func_array($this->filter, [$content]);
}
return $content;
}
}

View File

@@ -210,9 +210,9 @@ class Template
* 渲染模板文件.
* @param string $template 模板文件
* @param array $vars 模板变量
* @return void
* @return string
*/
public function fetch(string $template, array $vars = []): void
public function fetch(string $template, array $vars = []): string
{
if ($vars) {
$this->data = array_merge($this->data, $vars);
@@ -220,9 +220,7 @@ class Template
if ($this->isCache($this->config['cache_id'])) {
// 读取渲染缓存
echo $this->cache->get($this->config['cache_id']);
return;
return $this->cache->get($this->config['cache_id']);
}
$template = $this->parseTemplateFile($template);
@@ -251,7 +249,7 @@ class Template
$this->cache->set($this->config['cache_id'], $content, $this->config['cache_time']);
}
echo $content;
return $content;
}
}

View File

@@ -97,9 +97,9 @@ class Think
* 渲染模板文件.
* @param string $template 模板文件
* @param array $data 模板变量
* @return void
* @return string
*/
public function fetch(string $template, array $data = []): void
public function fetch(string $template, array $data = []): string
{
if ('' == pathinfo($template, PATHINFO_EXTENSION)) {
// 获取模板文件名
@@ -111,7 +111,7 @@ class Think
throw new TemplateNotFoundException('template not exists:' . $template, $template);
}
$this->template->fetch($template, $data);
return $this->template->fetch($template, $data);
}
/**