dgoriaev/yii2-comments

Yii2 的评论模块

安装: 1

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 0

分支: 64

类型:yii2-extension

1.0.0 2024-10-03 11:45 UTC

This package is auto-updated.

Last update: 2024-10-03 11:47:02 UTC


README

Yii2 评论扩展


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

Latest Stable Version Total Downloads License Build Status Scrutinizer Code Quality

支持我们

您的业务是否依赖于我们的贡献?通过Patreon联系我们并提供支持。所有的承诺都将专门用于维护和新功能的人力分配。

安装

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

运行以下命令

php composer.phar require --prefer-dist yii2mod/yii2-comments "*"

或者

"yii2mod/yii2-comments": "*"

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

配置

数据库迁移

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

php yii migrate --migrationPath=@vendor/yii2mod/yii2-comments/migrations

模块设置

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

'modules' => [
    'comment' => [
        'class' => 'yii2mod\comments\Module',
    ],
]

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

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

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

注意事项

  1. 删除按钮仅对具有 admin 角色的用户可见。
  1. 当您删除一条评论时,所有嵌套的评论都将被标记为 已删除
  1. 您可以通过在 Comment 模块中更改 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 \yii2mod\comments\widgets\Comment::widget([
    'model' => $model,
]); ?>

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

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

在同一个页面上使用多个小部件时,请使用以下代码

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

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

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

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

高级示例

<?php echo \yii2mod\comments\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' => 'yii2mod\comments\Module',
        'controllerMap' => [
            'default' => [
                'class' => 'yii2mod\comments\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