BaseController.php 2.52 KB
<?php

namespace app\ht\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use function json_encode;

/**
 *
 * 基础控制器:
 * @todo 1. 去除CSRF验证,以后会开放
 * @todo 2. 简单的权限控制
 * @todo 目前已经有部分模块开启了 csrf 验证,直至全部覆盖.
 *
 * Class BaseController
 * @package app\ht\controllers
 */
class BaseController extends Controller
{
    public $layout = '/iframe';
    /**
     * CSR验证,关闭后可以在不提交CSR验证码的情况下通过POST方式提交数据
     * @todo 为整个系统添加验证 csrf 防钓鱼攻击验证
     * @var bool
     */
    public $enableCsrfValidation = false;

    /**
     * @var \yii\web\request
     */
    public $request;

    /**
     * @var \yii\web\response
     */
    public $response;


    /**
     * 增加了两个公共属性: request 和 response
     * 初始化
     */
    public function init()
    {
        $this->initTempFilePaths();
        parent::init();

        $this->request = Yii::$app->request;
        $this->response = Yii::$app->response;
    }

    /* @inheritdoc */
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }

    /**
     * 渲染 JSON 数据结果
     *
     * @param $data
     * @return string
     */
    public function renderJson($data)
    {
        return json_encode($data);
    }

    /**
     * 初始化web目录文件夹, 完成自动创建
     */
    private function initTempFilePaths()
    {
        $webRoot = Yii::getAlias('@webroot');

        // 临时文件
        $tmpFilePath = $webRoot . '/tmp';
        if (!is_dir($tmpFilePath)) {
            mkdir($tmpFilePath, 0777, true);
        }

        // 上传文件
        $uploadFilePath = $webRoot . '/upload';
        if (!is_dir($uploadFilePath)) {
            mkdir($uploadFilePath, 0777, true);
        }

        // 下载文件
        $downloadFilePath = $webRoot . '/download';
        if (!is_dir($downloadFilePath)) {
            mkdir($downloadFilePath, 0777, true);
        }
    }

    /**
     * 过滤空格
     * @param $var
     * @return mixed
     */
    public function filterVar($var)
    {
        $var = str_replace(" ", "", $var);
        $var = str_replace("\t", "", $var);

        return $var;
    }
}