thinkphp icon indicating copy to clipboard operation
thinkphp copied to clipboard

视图类View.class.php中parseTemplate方法存在的严重BUG

Open Itinysun opened this issue 9 years ago • 5 comments

以下是方法parseTemplate中关于获取路径的设定 ` // 获取当前主题的模版路径

    defined('THEME_PATH') or    define('THEME_PATH', $this->getThemePath($module));

` 此处以常量方式保存了模板路径,并且包含了Module文件夹名称,导致如果在一次脚本只能获取一个Module下面的模板路径,当以后再使用本函数获取路径时将无法再获取其他Module下的模板。 建议THEME_PATH并不包含Module文件夹名称。或者在此不要使用常量保存。 辛苦作者及时更新。

Itinysun avatar Jun 05 '16 07:06 Itinysun

发现这个问题其实是设计思想问题,现在的临时解决方案是使用绝对路径来渲染模板来避免。否则需要同时修改 fetch 方法 parseTemplate 方法 还有Template类的loadTemplate方法

Itinysun avatar Jun 05 '16 07:06 Itinysun

旧版的设计没有针对一个请求多次输出的情况,事实上这种情况非常的少

liu21st avatar Jun 05 '16 09:06 liu21st

其实不是一次请求多次输出,而是在主模板中动态输出一些片段,用的是View->Fetch,现在通过使用绝对路径来避免次问题

Itinysun avatar Jun 07 '16 00:06 Itinysun

建议可以 @ModelName:ViewPath:ViewSubPath:file.html

jjsty1e avatar Jun 13 '16 02:06 jjsty1e

@loveblue 动态输出片段 还不如直接用widget呢

liu21st avatar Jun 13 '16 03:06 liu21st