【已解答】webman视图改进建议

zhizun

用了几天webman,感觉视图这块用起来不是很方便,提几个建议:

1、可以参考TP的 View::fetch()

比如:admin/controller/Config 的 index 方法,如果模板路径没有特殊要求的话
那模板文件就是:admin/view/config/index.html
webman用法:return view('config/index'); 如果有成百上千个方法的话,也挺累的。。。
tp用法:return View::fetch(); 自动为 /view/当前应用/控制器/方法名.html

2、模板目录

个人觉得还是把view独立出来到根目录,app目录还是做纯业务代码较好。
最好可以在view.php里加个配置项,设置 模板目录,默认:/view/当前应用/,自定义:/template/当前应用/

-------上述都是以多应用为例!

1150 1 1
1个回答

walkor 打赏

1、View::fetch()这种功能不适合放在View类里,因为它需要获取请求的应用控制器等信息,导致View类与request对象耦合。
view应该只关注视图输入的模板路径和参数,不应该隐式的依赖request对象。

还有两种写法对比

View::assign('key1', 'value1');
View::assign('key2', 'value2');
View::assign('key3', 'value3');
return View::fetch();
return view('user/index', [
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
]);

显然第二种少打很多字符,语义更明确。

如果真需要fetch方法,实际上应该放在控制器基类里,然后return $this->view();,这个自己封装下就好了。

  1. think-template 支持自定义模板路径,在config/view.php里的optinons.view_path里设置
  • zhizun 2023-11-27

    OK,收到!

  • wocall 2023-11-28

    大佬就是大佬👍

  • 建站管家 2024-08-29

    第1种方法,能否像发帖者说的这样:return view();调用的模板就是:当前控制器/方法名.html

  • 兔白白 2024-08-29

    自己在控制器基类里面 封装一个 view() 就可以实现 自动调用当前控制器/方法名.html 的模版了

×
🔝