---
url: /docs/5.0/server/config.md
---
# 框架配置

## catchadmin 配置

首先先了解`catchadmin` 的项目相关配置
:::code-group

```php [config/catch.php]
return [
    /*
    |--------------------------------------------------------------------------
    | catch-admin 超级管理员
    |--------------------------------------------------------------------------
    |
    | 可以设置超级管理的用户 ID
    | 支持数组
    |
    |--------------------------------------------------------------------------
    */
    'super_admin' => 1,

    /*
    |--------------------------------------------------------------------------
    | catch-admin 请求允许
    |--------------------------------------------------------------------------
    |
    | 默认允许 GET 请求通过 RBAC 权限
    |
    |--------------------------------------------------------------------------
    */
    'request_allowed' => true,

    /*
    |--------------------------------------------------------------------------
    | catch-admin 模块设置
    |--------------------------------------------------------------------------
    |
    | 设置模块根目录
    | 设置模块的根命名空间
    | 设置模块默认生成的文件夹
    |
    |--------------------------------------------------------------------------
    */
    'module' => [
        'root' => 'modules',

        'namespace' => 'Modules',

        /**
         * 默认启动的模块
         */
        'default' => ['develop', 'user', 'common'],

        'default_dirs' => [
            'Http'.DIRECTORY_SEPARATOR,

            'Http'.DIRECTORY_SEPARATOR.'Requests'.DIRECTORY_SEPARATOR,

            'Http'.DIRECTORY_SEPARATOR.'Controllers'.DIRECTORY_SEPARATOR,

            'Models'.DIRECTORY_SEPARATOR,
        ],

        // 模块存储驱动
        // 默认使用文件驱动
        'driver' => [
            // currently, catchadmin support file and database
            // the default is driver
            'default' => 'file',

            // use database driver
            'table_name' => 'admin_modules',
        ],

        /**
         * 模块路由集合
         */
        'routes' => [],

        /**
         * 模块是否自动加载
         *
         * 如果设置成 true，模块会自动全部加载
         */
        'autoload' => env('CATCH_MODULE_AUTOLOAD', false),
    ],

    /*
    |--------------------------------------------------------------------------
    | catch-admin 响应
    |--------------------------------------------------------------------------
    */
    'response' => [
        // JSON 响应, 保证响应数据都是 json
        'always_json' => \Catch\Middleware\JsonResponseMiddleware::class,

        // 响应监听者
        // 监听[RequestHandled]事件
        'request_handled_listener' => \Catch\Listeners\RequestHandledListener::class,
    ],

    /*
   |--------------------------------------------------------------------------
   | 数据库 SQL 日志
   |--------------------------------------------------------------------------
   */
    'listen_db_log' => env('APP_DEBUG', true),

    /*
   |--------------------------------------------------------------------------
   | 管理员授权认证模型
   |--------------------------------------------------------------------------
   */
    'auth_model' => \Modules\User\Models\User::class,

    /*
   |--------------------------------------------------------------------------
   | 管理员授权 Guard
   |--------------------------------------------------------------------------
   */
    'auth' => 'admin',

    /*
   |--------------------------------------------------------------------------
   | 路由配置
   |--------------------------------------------------------------------------
   */
    'route' => [
        'prefix' => 'api',

        'middlewares' => [
            \Catch\Middleware\AuthMiddleware::class,
            \Catch\Middleware\JsonResponseMiddleware::class,
        ],
    ],

    /*
   |--------------------------------------------------------------------------
   | 前端 Vue 视图文件夹路径
   |
   | 如果不设置，将不会生成相关的 Vue 文件
   |--------------------------------------------------------------------------
   */
    'views_path' => base_path('web'.DIRECTORY_SEPARATOR.'src'.DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR),

    /*
   |--------------------------------------------------------------------------
   | 开启系统接口日志分析
   |
   | 接口日志依赖 Redis，提高性能
   |--------------------------------------------------------------------------
   */
    'system_api_log' => env('CATCH_SYSTEM_API_LOG', false),

    /*
   |--------------------------------------------------------------------------
   | 图片处理
   |
   | 默认使用 GD
   |--------------------------------------------------------------------------
   */
    'image' => [
        'driver' => env('CATCH_IMAGE_DRIVER', 'gd'),

        'options' => [

        ],

        /**
         * 默认读取磁盘
         */
        'read_from' => env('CATCH_IMAGE_READ_FROM', 'uploads'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 后台缓存统一管理
    |
    | 配置后台缓存前缀，便于清理后台管理的缓存
    |--------------------------------------------------------------------------
    */
    'admin_cache_key' => env('CATCH_ADMIN_CACHE_KEY', 'admin_dashboard_'),

     /*
    |--------------------------------------------------------------------------
    | 模型相关配置
    |
    | 配置模型的配置
    |--------------------------------------------------------------------------
    */
    'model' => [
        // created_at & updated_at format
        'date_format' => 'Y-m-d H:i:s',

        // update creator id
        'change_creator_id' => (bool) env('CATCH_CHANGE_CREATOR_ID', false),
    ],

    /*
    |--------------------------------------------------------------------------
    | Excel 配置
    |--------------------------------------------------------------------------
    */
    'excel' => [
        /**
         * 导出路径, 相对于 storage 目录得相对路径
         */
        'export_path' => 'excel/export',
    ],
];
```

:::

* `super_admin` 配置 **super admin** 的 **ID**，默认 `1`, 支持数组配置`[1,2,3]`

* `module` 模块相关配置

  * `root` 配置模块的根目录
  * `namespace` 模块根命名空间
  * `default` 默认模块，初始化 `develop`, `use`, `common` 三个模块
  * `default_dirs` 默认生成默认的目录
  * `driver` 模块配置驱动 默认是 file
  * `routes` 模块路由集合

* `response` 响应配置
  * `always_json` 响应输出 `Json`
  * `request_handled_listener `响应数据格式配置

* `auth` 认证相关配置

* `listen_db_log` 是否监听 **DB SQL**

* `route` 路由配置
  * `prefix` 路由前缀
  * `middlewares` 路由默认路由

* `views_path` 配置前端项目 views 路径

* `system_api_log` 是否开启系统接口日志分析

* `images` 图片处理配置

* `admin_cache_key` 后台缓存 `key` 统一前缀
  项目有定制需求，一定要看看这些配置

## 模块配置

除了整个系统的配置以外，系统还提供了模块化的配置，模块的配置也是相互独立的。如果模块需要配置，那么可以直接在模块目录下添加 `config` 目录，系统会自动加载配置文件。当然非要客制化下，也没问题。只需要在模块的`Provider` 下实现 `configPath` 这个方法即可

```php title="modules/Test/Providers/TestServiceProvider"
namespace Modules\Test\Providers;

use Catch\CatchAdmin;
use Catch\Providers\CatchModuleServiceProvider;

class TestServiceProvider extends CatchModuleServiceProvider
{
    public function confitPath(): string
    {
        return config_path;
    }
}
```

最终模块的配置如下结构

* Permissions
  * config
    * one.php
    * two.php

那么如何获取呢？按照 `Laravel` 的模式，应该还用下面的代码获取配置内容

```php
config('one')
```

但是因为是模块化独立的，所以获取上一定要加入模块的名称，最终应该是这么获取

```php
config('permissions.one.some_key')
```
