cyneek/yii2-comments

Yii2 的评论模块

安装: 1,079

依赖项: 0

建议者: 0

安全: 0

星级: 5

关注者: 3

分支: 3

开放问题: 1

类型:yii2-extension

1.0.3 2016-06-23 11:05 UTC

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
            ],
        ],
    ],
],