THINKPHP3.2项目常用配置

目录结构,Common为公用的

Common\Conf\config.php

默认的访问控制器层是Controller,我们可以调整设置如下:

'DEFAULT_C_LAYER'       =>  'Event', // 默认的控制器层名称改为Event

默认的视图层是View目录,我们可以调整设置如下:

'DEFAULT_V_LAYER'       =>  'Mobile', // 默认的视图层名称更改为Mobile

增加ACTION_SUFFIX配置参数,用于设置操作方法的后缀

'ACTION_SUFFIX'=>'Action'

 那么访问某个模块的add操作对应读取模块类的操作方法则由原来的add方法变成addAction方法。

/* 默认设定 */
'DEFAULT_CONTROLLER'    =>  'Index', // 默认控制器名称
'DEFAULT_ACTION'        =>  'index', // 默认操作名称
'DEFAULT_M_LAYER'       =>  'Logic', // 默认的模型层名称

/* URL设置 */
'URL_ROUTER_ON'   => true, // 开启路由
'URL_MODEL'             =>  2,

/*系统变量名称设置*/
'URL_HTML_SUFFIX'       =>  '',  // URL伪静态后缀设置
'VAR_MODULE'            =>  'm',     // 默认模块获取变量
'VAR_CONTROLLER'        =>  'c',    // 默认控制器获取变量
'VAR_ACTION'            =>  'a',    // 默认操作获取变量
'VAR_AJAX_SUBMIT'       =>  'ajax',  // 默认的AJAX提交变量
'VAR_JSONP_HANDLER'     =>  'callback',
'VAR_PATHINFO'          =>  's',

 扩展配置可以支持自动加载额外的自定义配置文件

'LOAD_EXT_CONFIG'  => ['db','business'], // 加载扩展配置

配置文件根据环境快速切换

'LOAD_EXT_CONFIG' => [
    APP_STATUS.'/config', //部署环境入口配置, 目前已定义环境配置[live:线上环境 test:测试环境 dev:开发环境]
    APP_STATUS.'/db',
],//加载扩展配置

在Index模块下配置Config/config.php

/* 错误页面模板 */
'TMPL_ACTION_ERROR'     =>  MODULE_PATH.'View/_Public/error.html',    // 默认错误跳转对应的模板文件
'TMPL_EXCEPTION_FILE'   =>  MODULE_PATH.'View/_Public/exception.html',// 异常页面的模板文件

'LAYOUT_ON'=> true,
'LAYOUT_NAME'=>'layout',  

支持多模块配置

<?php
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');

//定义环境,测试线为test,正式线为live
define('APP_STATUS', 'test');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',true);

// 定义应用目录
define('APP_PATH','./');

// 引入ThinkPHP入口文件
require '../vendor/autoload.php';

 再配置模块白名单

'MODULE_ALLOW_LIST'  => array('Home','Api','Admin'),
'DEFAULT_MODULE'     => 'Home', //默认模块

 设置之后,除了Home、Admin和Api模块之外的模块都不能被直接访问,并且Home模块是默认访问模块,

跨模块调用

D("模块名/model名")->getTableName();

模板替换

__ACTION__       //Home/Index/index
__CONTROLLER__   //Home/Index
{:MODULE_NAME}  //Home
{:CONTROLLER_NAME} //Index
{:ACTION_NAME}      //index
__PUBLIC__      //会被替换成当前网站的公共目录 通常是 /Public/
realpath(__ROOT__) //网站根目录地址

 组合查询

if ($startDate) {
    $param['secure_date'] = [['egt', $startDate]];
}
if ($endDate) {
    $param['secure_date'] = $param['secure_date'] ? array_merge([['elt', $endDate]], $param['secure_date']) : [['elt', $endDate]];
}
$where['cate_tree'] = [['like', "$id-%"], ['like', "%-$id-%"], 'OR'];
$where['_string'] = "FIND_IN_SET('{$this->session_employee_id}', worker_ids)";
if($keywords){
    $where['_string'] .= " AND img.wws_id LIKE '%$keywords%' OR img.car_number  LIKE '%$keywords%'";
}

 去重统计查询

    $count = $model->where($map)->count('distinct id');

 更新时字段加减

M('user')>where(['id' =>1])->data(['real_name' => $data['customer_name'], 'feedback_count' =>['exp', 'feedback_count+1']])->save();

thinkphp显示模板文件,自定义路径

# $this->display('drivinglicense:dialog_edit');
#ThinkPHP\Lib\Behavior\LocationTemplateBehavior.class.php
private function parseTemplateFile($templateFile) {
    if(''==$templateFile) {
        // 如果模板文件名为空 按照默认规则定位
        $templateFile = C('TEMPLATE_NAME');
    }elseif(false === strpos($templateFile,C('TMPL_TEMPLATE_SUFFIX'))){
        // 解析规则为 模板主题:模块:操作 不支持 跨项目和跨分组调用
        $path   =  explode(':',$templateFile);
        $action = array_pop($path);
        $module = !empty($path)?array_pop($path):MODULE_NAME;
        if(!empty($path)) {// 设置模板主题
            $path = dirname(THEME_PATH).'/'.array_pop($path).'/';
        }else{
            $path = THEME_PATH;
        }
        $depr = defined('GROUP_NAME')?C('TMPL_FILE_DEPR'):'/';
        $templateFile  =  $path.$module.$depr.$action.C('TMPL_TEMPLATE_SUFFIX');
    }
    if(!file_exists_case($templateFile))
        throw_exception(L('_TEMPLATE_NOT_EXIST_').'['.$templateFile.']');
    return $templateFile;
}
 

猜你喜欢

转载自hudeyong926.iteye.com/blog/2387102