teo_crm/yii2-comments

Yii2 的评论模块

安装: 100

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 0

开放问题: 0

类型:yii2-extension

dev-master 2018-01-03 07:19 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:01:42 UTC


README

Yii 2 Comments 模块安装

composer require "teo_crm/yii2-comments:~1.4"

配置

在配置 /protected/config/main.php

<?php
return [
	// ...
	'modules' => [
		// ...
		'comments' => [
		    'class' => 'teo_crm\yii\module\Comments\Module',
		    'userIdentityClass' => 'app\models\User',
		    'useRbac' => true,
		]
	],
	// ...
];

在你的 User 模型(或实现 IdentityInterface 接口的其他模型)中需要实现接口 "\teo_crm\yii\module\Comments\interfaces\CommentatorInterface"

class User extends \yii\db\ActiveRecord
    implements
        \yii\web\IdentityInterface,
        \teo_crm\yii\module\Comments\interfaces\CommentatorInterface
{
    // ...
    
    public function getCommentatorAvatar()
    {
        return $this->avatar_url;
    }
    
    public function getCommentatorName()
    {
        return $this->name;
    }
    
    public function getCommentatorUrl()
    {
        return ['/profile', 'id' => $this->id]; // or false, if user does not have a public page
    }
    
    // ...
}

在身份验证管理器中添加规则(如果 Module::$useRbac = true

<?php
use \teo_crm\yii\module\Comments\Permission;
use \teo_crm\yii\module\Comments\rbac\ItsMyComment;

$AuthManager = \Yii::$app->getAuthManager();
$ItsMyCommentRule = new ItsMyComment();

$AuthManager->add($ItsMyCommentRule);

$AuthManager->add(new \yii\rbac\Permission([
    'name' => Permission::CREATE,
    'description' => 'Can create own comments',
]));
$AuthManager->add(new \yii\rbac\Permission([
    'name' => Permission::UPDATE,
    'description' => 'Can update all comments',
]));
$AuthManager->add(new \yii\rbac\Permission([
    'name' => Permission::UPDATE_OWN,
    'ruleName' => $ItsMyCommentRule->name,
    'description' => 'Can update own comments',
]));
$AuthManager->add(new \yii\rbac\Permission([
    'name' => Permission::DELETE,
    'description' => 'Can delete all comments',
]));
$AuthManager->add(new \yii\rbac\Permission([
    'name' => Permission::DELETE_OWN,
    'ruleName' => $ItsMyCommentRule->name,
    'description' => 'Can delete own comments',
]));

更新数据库模式

在下载并配置 teo_crm/yii2-comments 之后,你需要做的最后一件事是通过应用迁移来更新你的数据库模式

命令行

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

用法

在视图

<?php
// ...

use teo_crm\yii\module\Comments;

echo Comments\widgets\CommentListWidget::widget([
    'entity' => (string) 'photo-15', // type and id
]);

参数

### 模块参数

  • userIdentityClass (必需,字符串) Yii2 使用的用户身份类,用于在应用程序中提供关于用户的信息。

  • useRbac (可选,布尔值) 默认 TRUE。定义评论系统是否在尝试更新、删除或添加新评论时使用 Rbac 验证来检查评论权限。

  • modelClasses (可选,字符串[]) 存储用户定义的模型类,将用于替代评论系统中的默认类。必须以 key => classname 格式。例如 'Comment' => '@app\comments\CommentModel'

小部件参数

  • entity (必需,字符串) 将标识此模块中所有评论下的一个部分的所有评论的实体。

  • theme (可选,字符串) 如果你想在应用程序中使用主题,你应该在这里定义其位置。

  • viewParams (可选,数组) 将直接发送到小部件视图文件的数据。必须以 key => data 格式。键将是视图中的变量名称。变量 CommentsDataProvider 已经被占用。

  • options (可选,数组) 默认 ['class' => 'comments-widget']。将被发送到包含评论系统的小部件 div 中的选项数据数组。

  • pagination (可选,数组) 将在评论面板中使用的分页配置。默认数据

public $pagination = 
    [
        'pageParam' => 'page',
        'pageSizeParam' => 'per-page',
        'pageSize' => 20,
        'pageSizeLimit' => [1, 50],
    ];
  • sort (可选,数组) 用于从面板检索评论的排序类型。可以是 comment 表中定义的任何列进行排序。默认数据
        'defaultOrder' => [
            'id' => SORT_ASC,
        ],
  • showDeleted (可选,布尔值) 默认 True。定义评论面板是否会显示指示已删除评论的消息。

  • showCreateForm (可选,布尔值) 默认 True。将显示或隐藏在此面板中添加评论的表单。

扩展包

### 扩展模型文件

根据你的需要,你可以设置 modelMap 配置属性

	// ...
	'modules' => [
		// ...
		'comments' => [
		    'class' => 'teo_crm\yii\module\Comments\Module',
		    'userIdentityClass' => 'app\models\User',
		    'useRbac' => true,
		    'modelMap' => [
		        'Comment' => '@app\comments\CommentModel'
		    ]
		]
	],
	// ...

注意:请记住,如果你正在更改 Comment 模型,新的类应该始终扩展包的原始 Comment 类。

### 附加行为和事件处理程序

此包允许你将行为或事件处理程序附加到任何模型。为此,你可以设置模型映射如下

	// ...
	'modules' => [
		// ...
		'comments' => [
		    'class' => 'teo_crm\yii\module\Comments\Module',
		    'userIdentityClass' => 'app\models\User',
		    'useRbac' => true,
		    '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/teo_crm/yii2-comments/widgets/views' => '@app/views/comments', // example: @app/views/comment/comment-form.php
            ],
        ],
    ],
],

### 扩展小部件

要扩展小部件代码和行为,你只需要扩展小部件类并调用它们而不是包的小部件。