跳至内容

安装

这些说明假设您已经安装了 CodeIgniter 4 应用程序启动器作为新项目的依据,设置了.env文件,并创建了一个可以通过 Spark CLI 脚本访问的数据库。

要求

  • Composer
  • Codeigniter v4.3.5 或更高版本
  • 一个可以通过 Spark CLI 脚本访问的已创建数据库
  • 如果使用 MySQL,则需要 InnoDB(而非 MyISAM)。

Composer 安装

安装通过Composer完成。示例假设您已全局安装它。如果您已将其安装为 phar,或者您需要调整调用 composer 本身的方式。

composer require codeigniter4/shield

故障排除

重要:composer 错误

如果您收到以下错误

Could not find a version of package codeigniter4/shield matching your minimum-stability (stable).
Require it with an explicit version constraint allowing its desired stability.
  1. 运行以下命令以更改项目 composer.json 中的最小稳定性

    composer config minimum-stability dev
    composer config prefer-stable true
  2. 或指定明确版本

    composer require codeigniter4/shield:dev-develop

    上述指定了develop分支。请参阅https://getcomposer.org.cn/doc/articles/versions.md#branches

    composer require codeigniter4/shield:^1.0.0-beta

    上述指定了v1.0.0-beta或更高版本且低于v2.0.0。请参阅https://getcomposer.org.cn/doc/articles/versions.md#caret-version-range-

初始设置

在项目中开始使用 Shield 之前,需要进行一些设置项目。

命令设置

  1. 运行以下命令。此命令处理手动设置的步骤 1-6。

    php spark shield:setup

    注意

    如果您想自定义表名,则必须在运行数据库迁移之前更改表名。请参阅自定义表名

手动设置

  1. 配置设置:Auth.phpAuthGroups.phpAuthToken.phpvendor/codeigniter4/shield/src/Config/ 复制到项目的 config 文件夹中,并将命名空间更新为 Config。还需要让这些类扩展原始类。请参阅以下示例。这些文件包含应用程序的所有设置、组和权限信息,需要进行修改以满足您网站的需求。

    // new file - app/Config/Auth.php
    <?php
    
    declare(strict_types=1);
    
    namespace Config;
    
    // ...
    use CodeIgniter\Shield\Config\Auth as ShieldAuth;
    
    class Auth extends ShieldAuth
    {
        // ...
    }
  2. 帮助程序设置:几乎每个页面都需要包含 authsetting 帮助程序。最简单的方法是将其添加到 app/Config/Autoload.php 文件中

    public $helpers = ['auth', 'setting'];
  3. 路由设置:可以在 app/Config/Routes.php 中使用单个调用来设置默认身份验证路由

    service('auth')->routes($routes);
  4. 安全设置:如果您使用会话验证器,出于安全原因,请将 Config\Security::$csrfProtection 设置为 'session'

  5. 电子邮件设置:配置 app/Config/Email.php 以允许 Shield 发送电子邮件。

    <?php
    
    namespace Config;
    
    use CodeIgniter\Config\BaseConfig;
    
    class Email extends BaseConfig
    {
        public string $fromEmail  = '[email protected]';
        public string $fromName   = 'your name';
        // ...
    }
  6. 迁移:运行迁移。

    注意

    如果您想自定义表名,则必须在运行数据库迁移之前更改表名。请参阅自定义表名

    php spark migrate --all

    注意:迁移错误

    当您运行 spark migrate --all 时,如果出现 Class "SQLite3" not found 错误

    1. 删除 tests/_support/Database/Migrations/ 中的示例迁移文件
    2. 或安装 sqlite3 php 扩展