kirillemko/yii-ci-integration

谁收到了 codeigniter 的代码,没有网络,还是有机会的

1.0.1 2021-07-09 17:06 UTC

This package is auto-updated.

Last update: 2024-09-26 17:41:52 UTC


README

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

composer require kirillemko/yii-ci-integration

或者

"kirillemko/yii-ci-integration": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

使用方法

在您的 CodeIgniter 配置文件夹中创建 yii_config.php 文件

<?php

include(APPPATH . '/config/database.php');

$commonConfig = [
    'id' => 'yii_sub_app',
    'basePath' => dirname(__DIR__),
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=' . $db['default']['hostname'] . ';dbname=' . $db['default']['database'] . '',
            'username' => $db['default']['username'],
            'password' => $db['default']['password'],
            'charset' => 'utf8',
        ],
    ],

];

$webOnlyConfig = [
    'components' => [
        'request' => [
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],
    ]
];

$consoleOnlyConfig = [
    'bootstrap' => ['gii'],
    'modules' => [
        'gii' => [
            'class' => 'yii\gii\Module',
        ],
    ],
];

if (defined('APP_CONSOLE')) {
    return array_merge_recursive($commonConfig, $consoleOnlyConfig);
}

return array_merge_recursive($commonConfig, $webOnlyConfig);

要将 Yii 用户组件与 CodeIgniter 组件同步,请注册我的用户组件,以相同的方式设置 identityClass,就像在 Yii 中做的那样,并在该类中实现 ExternalIdentityInterface

'components' => [
    ...
    'user' => [
        'class' => 'kirillemko\yci\components\user\User',
        'identityClass' => 'App\domain\common\models\Users',
    ],
class Users extends ActiveRecord implements ExternalIdentityInterface
{

    public function getId() {
        return $this->id;
    }

    public static function getIdentity() {
        $ci = &get_instance();
        $user_id = $ci->ion_auth->get_user_id();
        if( !$user_id ){
            return null;
        }
        return static::findOne($user_id);
    }
}

最后,在需要的地方加载 Yii 核心

require_once(APPPATH . '../vendor/yiisoft/yii2/Yii.php');
$yiiConfig = require APPPATH . 'config/yii_config.php';
new \yii\web\Application($yiiConfig); // Do NOT call run() here

要运行 Yii 迁移,请运行

vendor\kirillemko\yii-ci-integration\src\yii migrate

鸣谢

作者:Kirill Emelianenko,Evgeny Starodubcev

邮箱:kirill.emko@mail.ru