yii2mod / yii2-comments

Comments module for Yii2
MIT License
159 stars 64 forks source link

Событие afterDelete не вызывается #76

Closed andreivadimovich closed 7 years ago

andreivadimovich commented 7 years ago

yii2 advanced (2.0.10-dev) "yii2mod/yii2-comments": "dev-master"

Пишу в /common/config/main.php ` 'modules' => [

    'comment' => [
        'class' => 'yii2mod\comments\Module',
        'enableInlineEdit' => true,

        'controllerMap' => [
            'default' => [
                'class' => 'yii2mod\comments\controllers\DefaultController',
                    'on beforeCreate' => ['frontend\events\BonusEvents', 'handleCheckFiveReview'],
                    'on afterCreate' => ['frontend\events\BonusEvents', 'handleAfterFirstComment'],

                    'on afterDelete' => ['frontend\events\BonusEvents', 'handleAfterDeleteComment'],`

beforeCreate , afterCreate - работают. А вот afterDelete не отрабатывает. Как быть ?

ihorchepurnyi commented 7 years ago

Hi, I'll check it.

ihorchepurnyi commented 7 years ago

Странно, только что проверил на последней версии комментариев, это код работает:

        'comment' => [
            'class' => 'yii2mod\comments\Module',
            'controllerMap' => [
                'default' => [
                    'class' => 'yii2mod\comments\controllers\DefaultController',
                    'on afterDelete' => function ($event) {
                        die("afterDelete");
                    },
                ],
            ],
        ],
andreivadimovich commented 7 years ago

Не могу разобраться. Давайте я расскажу подробнее как я разложил конфиги. Это у меня в backend/config/main.php ` 'controllerMap' => [ 'comments' => 'yii2mod\comments\controllers\ManageController', // Also you can override some controller properties in following way: 'comments' => [ 'class' => 'yii2mod\comments\controllers\ManageController', 'searchClass' => [ 'class' => 'yii2mod\comments\models\search\CommentSearch', 'pageSize' => 25 ],

        'accessControlConfig' => [
            'class' => 'yii\filters\AccessControl',
            'rules' => [
                [
                    'allow' => true,
                    'roles' => ['administrator'],
                ],
            ],
        ],
    ],
],`

А это в common/config/main.php: 'controllerMap' => [ 'default' => [ 'class' => 'yii2mod\comments\controllers\DefaultController', 'on beforeCreate' => ['frontend\events\BonusEvents', 'handleCheckFiveReview'], 'on afterCreate' => ['frontend\events\BonusEvents', 'handleAfterFirstComment'], 'on afterDelete' => function ($event) { die("afterDelete"); }, ] ]

При этом - в админке комментарий удаляется, а если удалять через фронт (по ссылке удалить) то пишет - Forbidden (это от того что роль у меня не admin - а administrator видимо).

Я правильно понимаю что событие afterDelete должно вызываться и при удалении из фронтенда и из бекенда?

Можете подсказать, как мне переопределить событие afterDelete ? Или может быть знаете альтернативный вариант.Мне нужно при удалении комментария удалять все лайки за этот комментарий.

ihorchepurnyi commented 7 years ago

Здравствуйте, вы можете просто сделать для лайков внешний ключ и они будут автоматически удаляться. Событие afterDelete только вызывается при удалении через фронтенд. Вы можете переопределить контроллер и написать свою логику. Но я бы добавил просто внешний ключ

15.09.2017 12:09 пользователь "Andrei" notifications@github.com написал:

Не могу разобраться. Давайте я расскажу подробнее как я разложил конфиги. Это у меня в backend/config/main.php ` 'controllerMap' => [ 'comments' => 'yii2mod\comments\controllers\ManageController', // Also you can override some controller properties in following way: 'comments' => [ 'class' => 'yii2mod\comments\controllers\ManageController', 'searchClass' => [ 'class' => 'yii2mod\comments\models\search\CommentSearch', 'pageSize' => 25 ],

    'accessControlConfig' => [
        'class' => 'yii\filters\AccessControl',
        'rules' => [
            [
                'allow' => true,
                'roles' => ['administrator'],
            ],
        ],
    ],
],

],`

А это в common/config/main.php: 'controllerMap' => [ 'default' => [ 'class' => 'yii2mod\comments\controllers\DefaultController', 'on beforeCreate' => ['frontend\events\BonusEvents', 'handleCheckFiveReview'], 'on afterCreate' => ['frontend\events\BonusEvents', 'handleAfterFirstComment'], 'on afterDelete' => function ($event) { die("afterDelete"); }, ] ]

При этом - в админке комментарий удаляется, а если удалять через фронт (по ссылке удалить) то пишет - Forbidden (это от того что роль у меня не admin

  • а administrator видимо).

Я правильно понимаю что событие afterDelete должно вызываться и при удалении из фронтенда и из бекенда?

Можете подсказать, как мне переопределить событие afterDelete ? Или может быть знаете альтернативный вариант.Мне нужно при удалении комментария удалять все лайки за этот комментарий.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/yii2mod/yii2-comments/issues/76#issuecomment-329726280, or mute the thread https://github.com/notifications/unsubscribe-auth/AHoL21x1AXi_s-qd__I_Df7eHLaKzvYyks5sij66gaJpZM4PTG35 .

andreivadimovich commented 7 years ago

Спасибо за ответы! Все-таки переопределил контроллер.