cyneek / yii2-comments
Yii2 的评论模块
Requires
- yii2mod/yii2-behaviors: *
- yii2mod/yii2-enum: *
- yiisoft/yii2: >=2.0.4
This package is not auto-updated.
Last update: 2024-09-26 00:09:26 UTC
README
本模块为 Yii2 应用程序提供评论管理系统,它基于 Igor Chepurnoy 的 yii2mod/comments 包。
安装
1. 安装此扩展的首选方式是通过 composer。
运行以下命令
php composer.phar require --prefer-dist cyneek/yii2-comments "*"
或将以下内容添加到 composer.json 文件中的 require 部分
"cyneek/yii2-comments": "*"
2. 运行迁移
php yii migrate --migrationPath=@vendor/cyneek/yii2-comments/migrations
3. 将模块数据添加到 Yii2 配置文件
'modules' => [ 'comment' => [ 'class' => 'cyneek\comments\Module', 'userIdentityClass' => 'user\Identity' ], ... ]
4. (可选步骤)在管理面板中管理评论
将以下代码添加到主配置中的 admin 模块部分
'modules' => [ 'comment' => [ 'class' => 'cyneek\comments\Module', 'userIdentityClass' => 'user\Identity', 'controllerMap' => [ 'comments' => 'cyneek\comments\controllers\ManageController' ] ], ... ]
然后您可以通过以下 URL 访问管理部分
https:///path/to/index.php?r=admin/comments/index
使用方法
- 在视图中使用 ActiveRecord 模型
<?php echo \cyneek\comments\widgets\Comment::widget(['model' => $model]); ?>
- 在视图中使用实体和 entityId 字符串
<?php echo \cyneek\comments\widgets\Comment::widget(['entity' => '483f0e5a', 'entityId' => 149]); ?>
参数
模块参数
以下是模块将在应用程序配置文件中接受的参数列表
-
userIdentityClass(可选,字符串)Yii2 用于提供应用程序中用户身份信息的用户身份类。如果未定义,将尝试从 Yii2 系统中获取。
-
controllerNamespace(可选,字符串)模块控制器将拥有的命名空间。
-
modelMap(可选,字符串数组)将在模块中使用而不是默认类的类。必须具有 key => classname 格式。例如:
'Comment' => '@app\comments\CommentModel'
。有效的类键为:['Comment', 'CommentQuery', 'CommentSearch']。 -
useRbac(可选,布尔值)默认:FALSE。如果设置为 TRUE,则模块将使用 Rbac 安全角色系统在尝试更新、创建或删除评论时检查权限。
-
assetMap(可选,字符串数组)模块将使用而不是默认资产的配置。为了能够工作,必须具有以下格式
[ 'js' => ['file1'], 'css' => ['file2'], 'sourcePath' => 'url', 'depends' => ['file3', 'file4'] ]
小部件参数
为了能够区分应用程序中保存的不同类型的评论,系统将向每个评论添加一个实体和 entityId。这些值将用于过滤系统中的所有评论,以在每个视图中仅加载所需的评论。
为此,您必须使用以下选项之一
- model(可选,对象)将用于提取评论小部件的实体和实体 id 的加载 ActiveRecord 对象。
或
-
entity(可选,字符串)在不需要使用加载的 ActiveRecord 对象的情况下,定义手动评论实体的字符串。
-
entityId(可选,整数)
还有一系列可选参数可以定义评论系统的行为
-
maxLevel(可选,整数)默认 7。允许在评论系统中嵌套的答案的最大级别。
-
entityIdAttribute(可选,字符串)仅适用于使用
model
参数加载小部件的情况。将建立包含评论 entityId 参数的字段名称。 -
clientOptions(可选,数组)包含 JavaScript 资产参数的数组。查看
comment-list.js
资产文件以获取可能的变量的完整列表。 -
pjax(可选,布尔值)默认 FALSE。如果为 TRUE,则评论系统将使用 AJAX 向服务器发送和重新加载评论数据。
-
showDeletedComments(可选,布尔值)默认为TRUE。如果设置为FALSE,将隐藏所有已删除的评论。警告:如果评论系统设置为按最佳排序,并且此参数设置为TRUE,也将隐藏每个已删除评论的所有回复。
-
nestedBehavior(可选,布尔值)默认为TRUE。如果设置为FALSE,将显示同一级别的所有评论,而不是嵌套每个评论的回复。
-
allowAnonymousComments(可选,布尔值)默认为TRUE。当未登录应用时,如果设置为FALSE,将隐藏新的评论表单。
-
pagination(可选,数组)设置评论列表视图的分页选项。有关分页选项的更多信息:这里
-
sort(可选,数组)对评论列表视图中的评论进行排序。有关在Yii2中排序项目的更多信息:这里
扩展模块
扩展模型文件
根据您的需求,您可以为modelMap
配置属性设置
// ... 'modules' => [ // ... 'comment' => [ 'class' => 'cyneek\comments\Module', 'modelMap' => [ 'Comment' => '@app\comments\CommentModel' ] ] ], // ...
注意:请记住,如果您正在更改Comment
模型,新的类应该始终扩展包中的原始Comment
类。
附加行为和事件处理器
该包允许您将行为或事件处理器附加到任何模型。为此,您可以设置模型映射如下
// ... 'modules' => [ // ... 'comments' => [ 'class' => 'cyneek\comments\Module', 'userIdentityClass' => 'app\models\User', 'modelMap' => [ 'Comment' => [ 'class' => '@app\comments\CommentModel', 'on event' => function(){ // code here }, 'as behavior' => ['class' => 'Foo'], ] ] ], // ...
扩展视图文件
您可以使用配置文件中的theme
组件扩展此包提供的视图文件。
// app/config/web.php 'components' => [ 'view' => [ 'theme' => [ 'pathMap' => [ '@vendor/cyneek/comments/widgets/views' => '@app/views/comments', // example: @app/views/comment/_form.php ], ], ], ],