举杯邀月

Yii2 使用模板生成纯静态html文件

摘要:静态化可以分为纯静态与伪静态,伪静态是把url的后缀改成 .html 或者 .shtml,实际还是访问的动态程序,纯静态是直接生成 html 的静态文件进行访问。整理下yii2生成纯静态html的方法。

静态化可以分为纯静态与伪静态,伪静态是把url的后缀改成 .html 或者 .shtml,实际还是访问的动态程序,纯静态是直接生成 html 的静态文件进行访问。纯静态与伪静态都有各自的优势与缺点及各自的用途。整理下yii2生成纯静态html的方法。

在 yii2 中渲染视图模板使用render方法进行调取模板、渲染后返回模板。

我们可以获取 render 返回渲染好的模板进行写入文件,实现纯静态html的需求。

我们先写一个写文件的公共方法:

Tool.php
/**
 * @description: 生成html静态文件
 * @author: injurys
 * @param string $html  文件内容
 * @param string $name  文件名
 * @param string $path  文件路径
 * @return bool|int|string
 * @throws \yii\base\ExitException
*/
public static function createHtml($html='', $path='/', $name='index')
{
    if(empty($html)) return '更新失败:文件内容为空';
     try{
        if(!is_dir($path))
            mkdir($path, 0777, true);
        @chmod($path,0777);
        return file_put_contents($path.'/'.$name.'.shtml', $html);
    }catch (\Exception $e){
        return '更新失败:'.$e->getMessage();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

方法成功返回静态文件大小,失败返回失败信息。

function actionIndex()
{
    $html = (new IndexController($this->id, $this->module))->runAction('index');
    $result = Tool::createHtml($html, 'filePath', 'fileName')
    if(is_string($result)){
        //生成失败
    }else{
        //生成成功
    }
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

该方法使用了 runAction 的方法,更多详情参考
Yii2 runAction 调用其他控制器方法及传递参数

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fc70ba1c528c.html

2020-08-02 标签: yii2