Name Last Update
..
assets Loading commit data...
behaviors Loading commit data...
controllers Loading commit data...
messages Loading commit data...
migrations Loading commit data...
models Loading commit data...
resources Loading commit data...
views Loading commit data...
widgets Loading commit data...
Module.php Loading commit data...
readme Loading commit data...
todo Loading commit data...

readme

1. Запускаем миграцию:
php yii migrate --migrationPath=common/modules/comment/migrations
2. Добавляем модуль в конфиг модуль:
'modules' => [
...
'artbox-comment' => [
'class' => 'common\modules\comment\Module',
],
],
3. Добавляем в конфиг переводы:
'i18n' => [
'translations' => [
...
'artbox-comment' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@common/modules/comment/messages',
],
],
],
4. Для управления добавляем в конфиги админки карту контроллера:
'controllerMap' => [
...
'artbox-comments' => [
'class' => 'common\modules\comment\controllers\ManageController',
'viewPath' => '@common/modules/comment/views/manage',
],
],
5. В конфиге админке поменять пользователя на покупателя:
'modules' => [
...
'artbox-comment' => [
'class' => 'common\modules\comment\Module',
'userIdentityClass' => 'common\models\Customer',
],
],
6. Вывод виджета:
echo CommentWidget::widget([
'model' => $product,
]);
7. Добавляем в нужную модель методы:
public function getComments() {
return $this->hasMany(CommentModel::className(), ['entity_id' => 'product_id'])->where(['artbox_comment.entity' => self::className(), 'artbox_comment.status' => CommentModel::STATUS_ACTIVE, 'artbox_comment.artbox_comment_pid' => NULL]);
}
/** Не обязательно для рейтинга PG ONLY **/
public function recalculateRating() {
$average = $this->getComments()->joinWith('rating')->select(['average' => 'avg(artbox_comment_rating.value)::float'])->scalar();
if(!$average) {
$average = 0;
}
$averageRating = $this->averageRating;
if(!empty($averageRating)) {
$averageRating->value = $average;
} else {
$averageRating = new ProductToRating(['product_id' => $this->product_id, 'value' => $average]); // Заменить модель
}
if($averageRating->save()) {
return true;
} else {
return false;
}
}
public function getAverageRating() {
return $this->hasOne(ProductToRating::className(), ['product_id' => 'product_id']); // Заменить модель
}