denisbespyatov/directchat

Yii2 直接聊天

v1.0.0.1 2023-10-19 09:46 UTC

This package is not auto-updated.

Last update: 2024-09-20 12:25:41 UTC


README

#Yii2 直接聊天 为你的 yii2 应用提供的简单聊天功能

##安装

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

你可以运行

php composer.phar require --prefer-dist denisbespyatov/directchat

或者添加

"denisbespyatov/directchat": "*"

到你的 composer.json 文件的 require 部分中。

##演示

一旦扩展安装完成,只需按照以下方式修改你的应用程序配置

return [
    'bootstrap' => ['directchat'],
    'modules' => [
        'directchat' => [
            'class' => 'denisbespyatov\directchat\Module',
        ],
        // ...
    ],
    // ...
];

##使用方法

像以下这样扩展主要的 conversation

namespace common\models;

use common\models\User;
//...

class Conversation extends \denisbespyatov\directchat\db\Conversation
{
    public function getContact()
    {
        return $this->hasOne(User::className(), ['id' => 'contact_id']);
    }
    
    /**
     * @inheritDoc
     */
    protected static function baseQuery($userId)
    {
        return parent::baseQuery($userId) ->with(['contact.profile']);
    }
    
    /**
     * @inheritDoc
     */
    public function fields()
    {
        return [
            //...
            'contact' => function ($model) {
                return $model['contact'];
            },
            'deleteUrl',
            'readUrl',
            'unreadUrl',
            //...
        ];
    }
}

像以下这样扩展主要的 message

namespace common\models;

//...

class Message extends \denisbespyatov\directchat\db\Message
{
    /**
     * @inheritDoc
     */
    public function fields()
    {
        return [
            //...
            'text',
            'date' => 'created_at',
            //...
        ];
    }
}

创建一个控制器,如下所示

namespace frontend\controllers;

//...
use yii\web\Controller;
use common\models\Conversation;
use common\models\Message;
use denisbespyatov\directchat\controllers\ControllerTrait;
//...

class MessageController extends Controller
{
    use ControllerTrait;
    
    /**
     * @return string
     */
    public function getMessageClass()
    {
        return Message::className();
    }

    /**
     * @return string
     */
    public function getConversationClass()
    {
        return Conversation::className();
    }
}

注意:如果你在这个前端应用中使用此扩展,你可以在 index.twig 中找到小部件的使用方法。