mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 07:12:47 +08:00
Merge branch 'master' of https://github.com/top-think/think
This commit is contained in:
@@ -132,11 +132,24 @@ class Template
|
|||||||
* 模板变量获取
|
* 模板变量获取
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $name 变量名
|
* @param string $name 变量名
|
||||||
* @return string|false
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function get($name)
|
public function get($name = '')
|
||||||
{
|
{
|
||||||
return isset($this->data[$name]) ? $this->data[$name] : false;
|
if ('' == $name) {
|
||||||
|
return $this->data;
|
||||||
|
} else {
|
||||||
|
$data = $this->data;
|
||||||
|
foreach (explode('.', $name) as $key => $val) {
|
||||||
|
if (isset($data[$val])) {
|
||||||
|
$data = $data[$val];
|
||||||
|
} else {
|
||||||
|
$data = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -896,19 +909,21 @@ class Template
|
|||||||
*/
|
*/
|
||||||
private function parseTemplateName($templateName)
|
private function parseTemplateName($templateName)
|
||||||
{
|
{
|
||||||
if ('$' == substr($templateName, 0, 1)) {
|
|
||||||
//支持加载变量文件名
|
|
||||||
$templateName = $this->get(substr($templateName, 1));
|
|
||||||
}
|
|
||||||
$array = explode(',', $templateName);
|
$array = explode(',', $templateName);
|
||||||
$parseStr = '';
|
$parseStr = '';
|
||||||
foreach ($array as $templateName) {
|
foreach ($array as $templateName) {
|
||||||
if (empty($templateName)) {
|
if (empty($templateName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (0 === strpos($templateName, '$')) {
|
||||||
|
//支持加载变量文件名
|
||||||
|
$templateName = $this->get(substr($templateName, 1));
|
||||||
|
}
|
||||||
$template = $this->parseTemplateFile($templateName);
|
$template = $this->parseTemplateFile($templateName);
|
||||||
// 获取模板文件内容
|
if (is_file($template)) {
|
||||||
$parseStr .= file_get_contents($template);
|
// 获取模板文件内容
|
||||||
|
$parseStr .= file_get_contents($template);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $parseStr;
|
return $parseStr;
|
||||||
}
|
}
|
||||||
@@ -973,9 +988,9 @@ class Template
|
|||||||
$name = 'name';
|
$name = 'name';
|
||||||
}
|
}
|
||||||
if ($single) {
|
if ($single) {
|
||||||
$regex = $begin . $tagName . '\b(?>(?:(?!' . $name . '=).)*)\b' . $name . '=([\'\"])(?<name>[\w\-\/\.\:@,\\\\]+)\\1(?>[^' . $end . ']*)' . $end;
|
$regex = $begin . $tagName . '\b(?>(?:(?!' . $name . '=).)*)\b' . $name . '=([\'\"])(?<name>[\$\w\-\/\.\:@,\\\\]+)\\1(?>[^' . $end . ']*)' . $end;
|
||||||
} else {
|
} else {
|
||||||
$regex = $begin . $tagName . '\b(?>(?:(?!' . $name . '=).)*)\b' . $name . '=([\'\"])(?<name>[\w\-\/\.\:@,\\\\]+)\\1(?>(?:(?!' . $end . ').)*)' . $end;
|
$regex = $begin . $tagName . '\b(?>(?:(?!' . $name . '=).)*)\b' . $name . '=([\'\"])(?<name>[\$\w\-\/\.\:@,\\\\]+)\\1(?>(?:(?!' . $end . ').)*)' . $end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'tag':
|
case 'tag':
|
||||||
|
|||||||
@@ -252,11 +252,13 @@ EOF;
|
|||||||
$config['tpl_path'] = dirname(__FILE__) . '/';
|
$config['tpl_path'] = dirname(__FILE__) . '/';
|
||||||
$config['tpl_suffix'] = '.html';
|
$config['tpl_suffix'] = '.html';
|
||||||
$template = new Template($config);
|
$template = new Template($config);
|
||||||
|
$files = ['extend' => 'extend', 'include' => 'include'];
|
||||||
|
$template->assign('files', $files);
|
||||||
|
|
||||||
$content = <<<EOF
|
$content = <<<EOF
|
||||||
{extend name="extend" /}
|
{extend name="\$files.extend" /}
|
||||||
{block name="side"}
|
{block name="side"}
|
||||||
{include file="include" name="\$user.name" value="\$user.account" /}
|
{include file="\$files.include" name="\$user.name" value="\$user.account" /}
|
||||||
{\$message}{literal}{\$message}{/literal}
|
{\$message}{literal}{\$message}{/literal}
|
||||||
{/block}
|
{/block}
|
||||||
EOF;
|
EOF;
|
||||||
@@ -374,4 +376,12 @@ EOF;
|
|||||||
$value = $template->get('name');
|
$value = $template->get('name');
|
||||||
$this->assertEquals('value', $value);
|
$this->assertEquals('value', $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testVarGet()
|
||||||
|
{
|
||||||
|
$template = new Template();
|
||||||
|
$data = ['a' => 'a', 'b' => 'b'];
|
||||||
|
$template->assign($data);
|
||||||
|
$this->assertEquals($data, $template->get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user