V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abccccabc
V2EX  ›  PHP

各位大神:请问 thinkphp5 在行为里怎样获取当前请求方法的模板文件呀?

  •  
  •   abccccabc · 2018-08-04 09:28:05 +08:00 · 4013 次点击
    这是一个创建于 2301 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大神:请问 thinkphp5 在行为里怎样获取当前请求方法的模板文件呀?

    注:实际模板文件可能不是方法名

    14 条回复    2018-08-06 14:38:37 +08:00
    eluotao
        1
    eluotao  
       2018-08-04 09:38:00 +08:00
    这个应该发在 thinkphp 社区吧.
    hsr
        2
    hsr  
       2018-08-04 09:45:14 +08:00
    $request
    abccccabc
        3
    abccccabc  
    OP
       2018-08-04 09:58:12 +08:00
    @eluotao 你忘记了,这里大牛也比较的多些。
    kenorizon
        4
    kenorizon  
       2018-08-04 10:20:47 +08:00
    https://github.com/top-think/framework/blob/5.1/library/think/view/driver/Think.php#L115
    定位模板文件的函数在这里 不过是 private 的 不能直接调用到
    vacker
        5
    vacker  
       2018-08-04 11:05:55 +08:00 via Android
    模板可以传变量否?
    abccccabc
        6
    abccccabc  
    OP
       2018-08-04 11:08:25 +08:00
    @vacker 其实在行为里我只需要知道模板文件地址,要判断是否模板文件有更新。仅此而已。
    linxiaojialin
        7
    linxiaojialin  
       2018-08-05 02:26:05 +08:00
    不用判断这个吧,修改了视图文件就会自动更新的,如果请求时还没更新,可能是 PHP 开了缓存模块,得等几分钟。或可能改错了文件了。
    realpg
        8
    realpg  
       2018-08-05 17:19:13 +08:00
    @abccccabc #3
    大牛并不用 thinkphp
    abccccabc
        9
    abccccabc  
    OP
       2018-08-06 08:57:16 +08:00
    @linxiaojialin 判断这个是因为某些页面我设置的静态缓存可能会大些,如果此时修改了模板文件,但不检查模板文件的时间,那么静态缓存是不会更新的。
    linpf
        10
    linpf  
       2018-08-06 09:40:44 +08:00
    @realpg 不认同
    linpf
        11
    linpf  
       2018-08-06 09:53:47 +08:00
    @abccccabc 目前的框架应该是无法获取到模板文件地址的,除非使用的默认路径。如果不使用默认路径,需要在$this->fetch()方法中的第一个参数传输需要解析的文件。但是这个内容只在 fetch 方法中进行处理,并没有存到任何全局变量或者全局对象属性当中。所以如果需要实现你的想法,那么需要改动一下框架,在 fetch 方法中进行你的判断和更新。
    abccccabc
        12
    abccccabc  
    OP
       2018-08-06 10:33:32 +08:00
    @linpf 如果只能在 fetch 方法里实现,那静态缓存几乎相当于没用。

    再等等,看有没有高人出现。这个静态缓存可以大大加快浏览速度。非常有用。
    linpf
        13
    linpf  
       2018-08-06 11:16:43 +08:00
    @abccccabc 缓存不是没有用啊,缓存也是在 fetch 方法中调用的。所以说你又想用缓存,又想进行文件改动判断,那你也要在 fetch 方法中改动。我刚刚回答你这个问题,是特意去看了下框架代码的。你可以自己研究下。
    abccccabc
        14
    abccccabc  
    OP
       2018-08-06 14:38:37 +08:00
    @linpf 我知道有这个$this->config['display_cache'],但要使用这个,要每个 fetch 的地方都要去改动一下,不切实际。


    现有的办法是采用默认的模板。

    谢谢你。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3417 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:50 · PVG 18:50 · LAX 02:50 · JFK 05:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.