Yii2 的评论模块

维护者

详细信息

github.com/coderseden/cmt

源代码

安装: 8

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 63

类型:yii2-extension

v2.1.1 2020-11-09 15:02 UTC

README

Yii2 评论扩展


本模块提供评论管理系统。

Latest Stable Version Total Downloads License Build Status Scrutinizer Code Quality

安装

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

运行以下命令

php composer.phar require --prefer-dist coderseden/cmt "*"

或在您的 composer.json 的 require 部分添加以下内容

"coderseden/cmt": "*"

配置

数据库迁移

在使用评论小部件之前,我们还需要准备数据库。

php yii migrate --migrationPath=@vendor/coderseden/cmt/migrations

模块设置

要访问模块,您需要将以下代码添加到您的应用程序配置中

'modules' => [
    'comment' => [
        'class' => 'coderseden\cmt\Module',
    ],
]

注意:模块 ID 必须为 comment,而不能是其他名称。这是因为代码中某处使用了此名称。欢迎提交一个 PR 来修复它,使其使用配置的模块 ID。

现在您可以通过以下 URL 访问管理部分:https:///path/to/index.php?r=comments/index

默认情况下,只有具有 admin 角色的用户可以访问评论管理部分。但是,您可以覆盖 ManageController 的 accessControlConfig 属性。

注意

  1. 删除按钮仅对具有 admin 角色的用户可见。
  1. 删除评论时,所有嵌套评论都将标记为 已删除
  1. 您可以通过更改 Comment Module 中的 commentModelClass 属性来覆盖默认的 CommentModel 类。
  1. 您可以在 userIdentityClass 中实现自己的 getAvatargetUsername 方法。只需在您的 User 模型中创建这些方法即可。例如
public function getAvatar()
{
    // your custom code
}

public function getUsername()
{
    // your custom code
}

使用方法

基本示例

// the model to which are added comments, for example:
$model = Post::find()->where(['title' => 'some post title'])->one();

<?php echo \coderseden\cmt\widgets\Comment::widget([
    'model' => $model,
]); ?>

您可以使用自己的模板来渲染评论

<?php echo \coderseden\cmt\widgets\Comment::widget([
  'model' => $model,
  'commentView' => '@app/views/site/comments/index' // path to your template
]); ?>

对于同一页面上的多个小部件,使用以下代码

<?php echo \coderseden\cmt\widgets\Comment::widget([
      'model' => $model,
]); ?>

<?php echo \coderseden\cmt\widgets\Comment::widget([
      'model' => $model2,
      'formId' => 'comment-form2',
      'pjaxContainerId' => 'unique-pjax-container-id'
]); ?>

要启用评论列表的分页,使用以下代码

<?php echo \coderseden\cmt\widgets\Comment::widget([
      'model' => $model,
      'dataProviderConfig' => [
          'pagination' => [
              'pageSize' => 10
          ],
      ]
]); ?>

高级示例

<?php echo \coderseden\cmt\widgets\Comment::widget([
      'model' => $model,
      'relatedTo' => 'User ' . \Yii::$app->user->identity->username . ' commented on the page ' . \yii\helpers\Url::current(),
      'maxLevel' => 2,
      'dataProviderConfig' => [
          'pagination' => [
              'pageSize' => 10
          ],
      ],
      'listViewConfig' => [
          'emptyText' => Yii::t('app', 'No comments found.'),
      ],
]); ?>

使用事件

您可以使用以下事件

'modules' => [
    'comment' => [
        'class' => 'coderseden\cmt\Module',
        'controllerMap' => [
            'default' => [
                'class' => 'coderseden\cmt\controllers\DefaultController',
                'on beforeCreate' => function ($event) {
                    $event->getCommentModel();
                    // your custom code
                },
                'on afterCreate' => function ($event) {
                    $event->getCommentModel();
                    // your custom code
                },
                'on beforeDelete' => function ($event) {
                    $event->getCommentModel();
                    // your custom code
                },
                'on afterDelete' => function ($event) {
                    $event->getCommentModel();
                    // your custom code
                },
            ]
        ]
    ]
]

使用评论插件事件

$(document).on('beforeCreate', '#comment-form', function (e) {
    if (!confirm("Everything is correct. Submit?")) {
        return false;
    }
    return true;
});

可用事件如下

  • beforeCreate
  • afterCreate
  • beforeDelete
  • afterDelete
  • beforeReply
  • afterReply

国际化

本扩展中引入的所有文本和信息都可以在 'yii2mod.comments' 类别下进行翻译。您可以使用以下应用程序配置使用本扩展提供的翻译

return [
    'components' => [
        'i18n' => [
            'translations' => [
                'yii2mod.comments' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@yii2mod/comments/messages',
                ],
                // ...
            ],
        ],
        // ...
    ],
    // ...
];

示例评论

Alt text