Yii2 почему не выводятся комментарии?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Yii2 почему не выводятся комментарии?

Сообщение frmaxm »

Добрый день,

добавил в свой проект комментарии vova07/yii2-start-comments-module

Добавил в config

Код: Выделить всё

'modules' => [
        'comments' => [
            'class' => 'vova07\comments\Module'
        ]
    ],

В БД сделал запись комментария.
В контроллере

Код: Выделить всё

$comments = new \vova07\comments\models\backend\Comment();
И конечно же в представлении:

Код: Выделить всё

echo \vova07\comments\widgets\Comments::widget(
        [
            'model' => $comments,
            'jsOptions' => [
                'listSelector' => '[data-comment="list"]', // Comment list selector
                'parentSelector' => '[data-comment="parent"]', // Comment parent selector
                'appendSelector' => '[data-comment="append"]', // Container selector where "reply" and "edit" form will be appended by jQuery
                'formSelector' => '[data-comment="form"]', // Comment form selector
                'contentSelector' => '[data-comment="content"]', // Comment content selector
                'toolsSelector' => '[data-comment="tools"]', // Comment tools selector
                'formGroupSelector' => '[data-comment="form-group"]', // Comment form group selector
                'errorSummarySelector' => '[data-comment="form-summary"]', // Comment form summary error selector
                'errorSummaryToggleClass' => 'hidden', // Comment summary error class that will be add/remove by jQuery on error reporting
                'errorClass' => 'has-error', // Comment form group error class
                'offset' => 0 // Top offset for scrollTo function. Use it if you have fixed top menu for correct scrolling to comment's parent. In case with fixed menu, "offset" value must be equal with menu block height.
            ]
        ]
    );

Но почему выводит мне пустоту...

Подскажите почему пусто? И что я делаю не так?
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 почему не выводятся комментарии?

Сообщение vova07 »

Вы не совсем правильно настроили все.
Конкретный пример реализации можете посмотреть в модуле блога:
Тут контроллер, именно здесь у вас и находится проблема.
Здесь представление.

Принцип работу модуля заключается в следующем, чтоб было более понятно:
- Создается запись в таблице: "comments_models" в ней хранится нэймспэйс ваших классво моделей с уникальным ИД в системе которые могут быть комментированы. Если записи с переданной моделью в этой таблице нет, то создавать комментарии для нее не получится. (Вы это упустили)
- Дальше в таблице: "comments" хранятся сами комментарии но с привязкой к конкретнному классу модели и к конкретному ИД модели. Таким образом они сортируются. (Это все дело работает автоматически. Просто для справки)
- В момент вывода или создания комментариев, в виджет комментариев нужно передавать сущность модели для которой нужно создать или выводить комментарии. Виджет в свою очередь определяет уникальный ИД класса модели в системе, и делает выборку всех комментариев которые относятся к данному классу, и имею привязку к конкретной ИД переданной модели. То есть если мы передали модель: Post где ИД поста например 7, виджет будет искать все комментарии которые были написаны для поста с ИД 7. (Все это дело автоматизировано, и вам нужно просто передать инстансу нужной модели. Вы же передали голую модель коммента. Напоминаю что нужно учитывать 1-й пункт.)

Я знаю что виновата моя документация, но не хватает времени сейчас все исправить. Надеюсь это будет полезно не только вам, но и другим разработчикам.

Удачи!
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Yii2 почему не выводятся комментарии?

Сообщение futbolim »

@vova07, Вы лучший.
Откуда столько любви к homo sapiens? )
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Yii2 почему не выводятся комментарии?

Сообщение lynicidn »

futbolim писал(а):@vova07, Вы лучший.
Откуда столько любви к homo sapiens? )
сначала человек работает на имя, потом имя на него ^^ все очевидно же :)
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 почему не выводятся комментарии?

Сообщение NEIRON »

vova07 писал(а):Я знаю что виновата моя документация, но не хватает времени сейчас все исправить. Надеюсь это будет полезно не только вам, но и другим разработчикам.
Можно даже в разделе "Авторский код", создать подраздел "Модули от vova07", или просто эту тему в авторский код перенести.

От меня вопрос такой: делаю по инструкции https://github.com/vova07/yii2-start-comments-module
Установил через composer
Запустил файл миграций (единственное там попровил таблицу users -> user, но думаю, это не является причиной проблемы)
Далее пытаюсь выполнить команду:

Код: Выделить всё

php yii comments/rbac/add
Получаю ошибку:

Код: Выделить всё

admin@server:/var/www/project$ php yii comments/rbac/add
Error: Unknown command "comments/rbac/add".
 
RBAC использую стандартный из коробки Yii2

p.s.: строчку в console.config.php добавил:

Код: Выделить всё

 'modules' => [
    ...
    'comments' => [
      'class' => 'vova07\comments\Module'
    ]
    ...
  ],

 
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 почему не выводятся комментарии?

Сообщение vova07 »

NEIRON писал(а):
vova07 писал(а):Я знаю что виновата моя документация, но не хватает времени сейчас все исправить. Надеюсь это будет полезно не только вам, но и другим разработчикам.
Можно даже в разделе "Авторский код", создать подраздел "Модули от vova07", или просто эту тему в авторский код перенести.

От меня вопрос такой: делаю по инструкции https://github.com/vova07/yii2-start-comments-module
Установил через composer
Запустил файл миграций (единственное там попровил таблицу users -> user, но думаю, это не является причиной проблемы)
Далее пытаюсь выполнить команду:

Код: Выделить всё

php yii comments/rbac/add
Получаю ошибку:

Код: Выделить всё

admin@server:/var/www/project$ php yii comments/rbac/add
Error: Unknown command "comments/rbac/add".
RBAC использую стандартный из коробки Yii2

p.s.: строчку в console.config.php добавил:

Код: Выделить всё

 'modules' => [
    ...
    'comments' => [
      'class' => 'vova07\comments\Module'
    ]
    ...
  ],

Вам нужно еще добавить "controllerNamepsace":

Код: Выделить всё

'comments' => [
            'class' => 'vova07\comments\Module',
            'controllerNamespace' => 'vova07\comments\commands'
] 
Тему я создам в разделе авторского кода, так как были уже такие предложения.

Спасибо!
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 почему не выводятся комментарии?

Сообщение NEIRON »

vova07 писал(а): Вам нужно еще добавить "controllerNamepsace":

Код: Выделить всё

'comments' => [
            'class' => 'vova07\comments\Module',
            'controllerNamespace' => 'vova07\comments\commands'
] 
Namespace добавил:

Код: Выделить всё

 'modules' => [
    'gii' => 'yii\gii\Module',
    'comments' => [
      'class' => 'vova07\comments\Module',
      'controllerNamespace' => 'vova07\comments\commands'
    ]
  ],
Снова выполняю команду в консоли:

Код: Выделить всё

php yii comments/rbac/add
Первая ошибка пропала. Получаю новое сообщение:

Код: Выделить всё

Exception 'yii\db\IntegrityException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`grcc-atlant`.`auth_item`, CONSTRAINT `auth_item_ibfk_1` FOREIGN KEY (`rule_name`) REFERENCES `auth_rule` (`name`) ON DELETE SET NULL ON UPDATE CASCADE)
The SQL being executed was: INSERT INTO `auth_item` (`name`, `type`, `description`, `rule_name`, `data`, `created_at`, `updated_at`) VALUES ('updateOwnComments', 2, 'Can update own comments', 'author', NULL, 1433147185, 1433147185)'

in /var/www/grcc/atlant/vendor/yiisoft/yii2/db/Schema.php:534

Error Info:
Array
(
    [0] => 23000
    [1] => 1452
    [2] => Cannot add or update a child row: a foreign key constraint fails (`grcc-atlant`.`auth_item`, CONSTRAINT `auth_item_ibfk_1` FOREIGN KEY (`rule_name`) REFERENCES `auth_rule` (`name`) ON DELETE SET NULL ON UPDATE CASCADE)
)

Код: Выделить всё

Stack trace:
#0 /var/www/grcc/atlant/vendor/yiisoft/yii2/db/Command.php(776): yii\db\Schema->convertException(Object(PDOException), 'INSERT INTO `au...')
#1 /var/www/grcc/atlant/vendor/yiisoft/yii2/rbac/DbManager.php(267): yii\db\Command->execute()
#2 /var/www/grcc/atlant/vendor/yiisoft/yii2/rbac/BaseManager.php(118): yii\rbac\DbManager->addItem(Object(yii\rbac\Permission))
#3 /var/www/grcc/atlant/vendor/vova07/yii2-start-comments-module/commands/RbacController.php(100): yii\rbac\BaseManager->add(Object(yii\rbac\Permission))
#4 [internal function]: vova07\comments\commands\RbacController->actionAdd()
#5 /var/www/grcc/atlant/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array)
#6 /var/www/grcc/atlant/vendor/yiisoft/yii2/base/Controller.php(151): yii\base\InlineAction->runWithParams(Array)
#7 /var/www/grcc/atlant/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('add', Array)
#8 /var/www/grcc/atlant/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('add', Array)
#9 /var/www/grcc/atlant/vendor/yiisoft/yii2/console/Application.php(161): yii\base\Module->runAction('comments/rbac/a...', Array)
#10 /var/www/grcc/atlant/vendor/yiisoft/yii2/console/Application.php(137): yii\console\Application->runAction('comments/rbac/a...', Array)
#11 /var/www/grcc/atlant/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#12 /var/www/grcc/atlant/yii(23): yii\base\Application->run()
#13 {main}
Напомню, что в файле миграции я поменял users -> user. А тут по ошибке не совсем понимаю, что не так.
Таблица auth_item создалась, там 16 записей.
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 почему не выводятся комментарии?

Сообщение NEIRON »

После повторного запуска команды:

Код: Выделить всё

neiron@acer:/var/www/grcc/atlant$ php yii comments/rbac/add
Появляется уже немного другая ошибка

Код: Выделить всё

Exception 'yii\db\IntegrityException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'administrateComments' for key 'PRIMARY'
The SQL being executed was: INSERT INTO `auth_item` (`name`, `type`, `description`, `rule_name`, `data`, `created_at`, `updated_at`) VALUES ('administrateComments', 2, 'Can administrate all \"Comments\" module', NULL, NULL, 1433320825, 1433320825)'
in /var/www/grcc/atlant/vendor/yiisoft/yii2/db/Schema.php:534
Error Info:
Array
(
    [0] => 23000
    [1] => 1062
    [2] => Duplicate entry 'administrateComments' for key 'PRIMARY'
)
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 почему не выводятся комментарии?

Сообщение vova07 »

NEIRON писал(а):После повторного запуска команды:

Код: Выделить всё

neiron@acer:/var/www/grcc/atlant$ php yii comments/rbac/add
Появляется уже немного другая ошибка

Код: Выделить всё

Exception 'yii\db\IntegrityException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'administrateComments' for key 'PRIMARY'
The SQL being executed was: INSERT INTO `auth_item` (`name`, `type`, `description`, `rule_name`, `data`, `created_at`, `updated_at`) VALUES ('administrateComments', 2, 'Can administrate all \"Comments\" module', NULL, NULL, 1433320825, 1433320825)'
in /var/www/grcc/atlant/vendor/yiisoft/yii2/db/Schema.php:534
Error Info:
Array
(
    [0] => 23000
    [1] => 1062
    [2] => Duplicate entry 'administrateComments' for key 'PRIMARY'
)
Вторая ошибка из-за того что некоторые права и роли уже были добавлены, и их повторное добавление невозможна.

Первая же ошибка не понятно почему появляется. Но дело в том что почему-то скрипт не может добавить правило "updateOwnComments" ибо проблемы с внешними ключами. Почему так и как решить, я честно не могу сказать ибо не могу повторить ошибку.
Думаю вам стоит очистить полностью RBAC таблицы и пересоздать се заново. Возможно баг из-за некоректных данных.

Извиняюсь за поздний ответ, но если есть такие ошибки которые касаются непосредственно моих расширений, лучше отписываться сразу на гитхаб, там я хот-бы получаю уведомления и вижу что нужно кому-то ответить, или в спец комнату в гиттере. На форуме же с уведомлениями мягко говоря не очень.
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 почему не выводятся комментарии?

Сообщение NEIRON »

vova07 писал(а): Думаю вам стоит очистить полностью RBAC таблицы и пересоздать се заново. Возможно баг из-за некоректных данных.
Большое спасибо за ответы.
Тогда еще вопрос, для вашего модуля с комментариями обязательно ли использование вашего RBAC модуля? Т.к. до этого я запускал стандартный файл миграций из yii rbac_init.php. Спасибо.
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Yii2 почему не выводятся комментарии?

Сообщение dmg »

насчет FOREIGN KEY. может не в тему, но попробуйте посмотреть мое сообщение viewtopic.php?f=19&t=29614
однажды созданный FOREIGN KEY не удаляется при удалении или обновлении связанных таблиц, а остается в БД.
если вы повторно создаете FOREIGN KEY с тем же именем, то получаете кучу проблем.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 почему не выводятся комментарии?

Сообщение vova07 »

NEIRON писал(а):
vova07 писал(а): Думаю вам стоит очистить полностью RBAC таблицы и пересоздать се заново. Возможно баг из-за некоректных данных.
Большое спасибо за ответы.
Тогда еще вопрос, для вашего модуля с комментариями обязательно ли использование вашего RBAC модуля? Т.к. до этого я запускал стандартный файл миграций из yii rbac_init.php. Спасибо.
Это не обязательно но в таком случае вам нужно будет самостоятельно добавить перед установкой модуля, роль "superadmin" если она еще у вас не создана.
Попробую по возможности убрать вообще зависимости для этого модуля.
sawa4
Сообщения: 5
Зарегистрирован: 2015.07.14, 14:38

Re: Yii2 почему не выводятся комментарии?

Сообщение sawa4 »

Всем привет! Народ кто нибудь установил данный модуль до конца? как должны быть заполнены таблицы?
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: Yii2 почему не выводятся комментарии?

Сообщение Neuromance »

sawa4 писал(а):Всем привет! Народ кто нибудь установил данный модуль до конца? как должны быть заполнены таблицы?
Там всё устанавливается интуитивно понятно. Если действовать по инструкции - проблем не возникнет..

В чём у вас проблемы?
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 почему не выводятся комментарии?

Сообщение NEIRON »

vova07 писал(а): Это не обязательно но в таком случае вам нужно будет самостоятельно добавить перед установкой модуля, роль "superadmin" если она еще у вас не создана.
Попробую по возможности убрать вообще зависимости для этого модуля.
Вобщем, не получилось прикрутить ваш модуль комментариев со стандартным RBAC. Поэтому будем пробовать поставить ваш RBAC и потом уже поставить модуль для комментариев. Собственно, с установкой RBAC оказалось тоже не всё так просто: viewtopic.php?f=9&t=29234
Arroyo
Сообщения: 105
Зарегистрирован: 2014.11.29, 11:24

Re: Yii2 почему не выводятся комментарии?

Сообщение Arroyo »

Add a new comment-on-able model namespace in yii2-start.domain/backend/comments/models/index/
У меня шаблон basic, модели articles и news. Что куда тут писать? Нет таких папок backend/comments/models/index/
Ответить