btba/chat-bundle

Symfony应用的聊天生成器

安装: 31

依赖者: 0

建议者: 0

安全性: 0

星标: 1

关注者: 2

分支: 0

开放问题: 18

语言:CSS

类型:symfony-bundle


README

POGODEV

欢迎使用聊天包项目!

Build Status Maintainability Test Coverage License: MIT

此项目旨在为任何symfony应用提供简单的聊天服务。

安装

由于此项目非常新,我们决定目前不添加Symfony Flex配方,因此配置必须手动完成。

注册

首先在您的仓库中运行以下命令安装依赖项

composer require btba/chat-bundle

并注册包

// config/bundles.php

return [
    //your bundles
    Btba\ChatBundle\BtbaChatBundle::class => ['all' => true]
];

配置

然后在您的应用目录中添加一个配置文件。以下参数是必须的

# config/packages/btba_chat.yaml

btba_chat:
    update_interval: 1000
    message_class: App\Entity\ChatMessage
    author_class: App\Entity\User

update_interval 指的是聊天两次刷新之间的时间
message_class 指的是托管消息的ORM类(支持Doctrine)
author_class 指的是托管作者的ORM类(支持Doctrine)

然后注册包路由并更改prefix以满足您的需求

# config/routes/btba_chat.yaml

btba_chat:
    resource: '@BtbaChatBundle/Resources/config/routes.yaml'
    prefix: /chat-bundle/

数据库

为了将作者和消息保存到您的数据库中,您需要创建至少两个扩展包模型的类,如下所示

// App\Entity\User

/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User extends BaseAuthor implements UserInterface
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=180, unique=true)
     */
    protected $username;
    
     /**
     * @ORM\OneToMany(targetEntity="App\Entity\ChatMessage", mappedBy="author", cascade={"persist"}, orphanRemoval=true)
     */
    private $messages;
// App\Entity\ChatMesssage

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Btba\ChatBundle\Model\BaseChatMessage;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ChatMessageRepository")
 */
class ChatMessage extends BaseChatMessage
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    protected $content;

    /**
     * @ORM\Column(type="datetime")
     */
    protected $date;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="messages", cascade={"persist"})
     * @ORM\JoinColumn(nullable=false)
     */
    protected $author;

}

并在message_class存储库中添加以下特质

// src/Repository/ChatMessageRepository.php

namespace App\Repository;

use Btba\ChatBundle\Query\MessageQuery;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;

class ChatMessageRepository extends ServiceEntityRepository
{
    use MessageQuery;
    
    //your code...
}

配置完成,您可以开始了!

使用方法

要使用此包,您需要在视图中添加几个组件。

如果您使用的是Encore,请将以下资产添加到您的app.css文件中

@import '../../vendor/btba/chat-bundle/assets/css/chat.css';

app.js文件中

import * as chat from '../../vendor/btba/chat-bundle/assets/js/chat';

//functions for the chat window management 
$(function(){
    $("#chevron").click(function(e) {
        chat.changeChevron(e.target);
    });
    
    $("#chat-submit").click(function(e) {
        chat.submitChat(e);
    });
});

在视图中,您现在只需渲染以下控制器

{{ render(controller('Btba\\ChatBundle\\Controller\\ChatController::show')) }}