Comments (11)
Здравствуйте, только что проверил работу reply кнопки на чистом шаблоне, не смог воспроизвести ошибку. Думаю дело в ассетах, попробуйте проверить наличие comments.js на странице и ошибок в консоли. Если вы меняли темплейт(_list.php), скиньте пожалуйста его код для воспроизведения ошибки.
from yii2-comments.
Файл _list я переименовал в comments.php
Правильно ли я понимаю - data-action вызывает соответствующую функцию в jquery?
Т.е. при клике на <?php echo Html::a("<span class='glyphicon glyphicon-share-alt'></span> Ответить", '#', ['class' => 'comment-reply', 'data' => ['action' => 'reply', 'comment-id' => $comment->id]]); ?>
-должен вызватся
/**
* Reply to comment
* @param event
*/
function reply(event) {
event.preventDefault();
var $commentForm = event.data.commentForm;
var settings = $commentForm.data('comment');
var $this = $(this);
var parentCommentSelector = $this.parents('[data-comment-content-id="' + $this.data('comment-id') + '"]');
//Move form to comment container
$commentForm.appendTo(parentCommentSelector);
//Update parentId field
$commentForm.find('[data-comment="parent-id"]').val($this.data('comment-id'));
//Show cancel reply link
$commentForm.find(settings.cancelReplyBtnSelector).show();
}
из файла comments.js ?
<?php
use yii\helpers\Html;
use yii\helpers\Url;
use yii\helpers\HtmlPurifier;
use common\components\rbac\rbacRoles;
?>
<?php if (!empty($comments)) : ?>
<?php foreach ($comments as $comment) : ?>
<li class="comment" id="comment-<?php echo $comment->id ?>">
<div class="comment-content" data-comment-content-id="<?php echo $comment->id ?>">
<div class="comment-author-avatar">
<?php echo $comment->getAvatar(['title' => $comment->getAuthorName(),'alt' => $comment->getAuthorName()]); ?>
</div>
<div class="comment-details">
<?php if ($comment->isActive): ?>
<div class="comment-action-buttons">
<?php if (Yii::$app->getUser()->can(rbacRoles::ROLE_ADMIN)): ?>
<?php echo Html::a('<span class="glyphicon glyphicon-trash"></span> Отключить', '#', ['data' => ['action' => 'delete', 'url' => Url::to(['/comment/default/delete', 'id' => $comment->id]), 'comment-id' => $comment->id]]); ?>
<?php endif; ?>
<?php if (!Yii::$app->user->isGuest && ($comment->level < $maxLevel || is_null($maxLevel))): ?>
<?php echo Html::a("<span class='glyphicon glyphicon-share-alt'></span> Ответить", '#', ['class' => 'comment-reply', 'data' => ['action' => 'reply', 'comment-id' => $comment->id]]); ?>
<?php endif; ?>
</div>
<?php endif; ?>
<div class="comment-author-name">
<span><?php echo $comment->getAuthorName(); ?></span>
<span class="comment-date">
<?php echo $comment->getPostedDate(); ?>
</span>
</div>
<div class="comment-body">
<?php echo $comment->getMessage(); ?>
</div>
</div>
</div>
<?php if ($comment->hasChildren()): ?>
<ul class="children">
<?php echo $this->render('_comments', ['comments' => $comment->children, 'maxLevel' => $maxLevel]) ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
<?php else:?>
<li class="noComments"><i>Комментариев нет...</i><li>
<?php endif; ?>`
from yii2-comments.
У меня скрипт в конце подключается в таком порядке .Возможно, должен подключаться после pjax? Или это не критично?
`<script src="/work/yii2-Blog/css/comments/comments.js"></script>
<script src="/work/yii2-Blog/assets/f3b3e99e/yii.validation.js"></script>
<script src="/work/yii2-Blog/assets/f3b3e99e/yii.activeForm.js"></script>
<script src="/work/yii2-Blog/assets/dffd9ef9/jquery.pjax.js"></script>
<script type="text/javascript">jQuery(document).ready(function () {
$('#comment-pjax-container-w0').on('pjax:end', function() {
$('#mes').css('display', 'none');
$('#mes').fadeIn(1000);
$('textarea').focus(function() {
$('#mes').fadeOut(1000);
});
})
jQuery('#comment-form').yiiActiveForm([{"id":"message_textarea","name":"message","container":".field-message_textarea","input":"#message_textarea","error":".help-block.help-block-error","validateOnChange":false,"validateOnBlur":false,"validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Комментарий»."});}}], []);
jQuery(document).pjax("#comment-pjax-container-w0 a", "#comment-pjax-container-w0", {"push":false,"replace":false,"timeout":10000,"scrollTo":false});
jQuery(document).on('submit', "#comment-pjax-container-w0 form[data-pjax]", function (event) {jQuery.pjax.submit(event, '#comment-pjax-container-w0', {"push":false,"replace":false,"timeout":10000,"scrollTo":false});});
jQuery('#SubscriptionSidebar-form').yiiActiveForm([{"id":"subscriptionsidebar-email","name":"email","container":".field-subscriptionsidebar-email","input":"#subscriptionsidebar-email","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Email»."});yii.validation.email(value, messages, {"pattern":/^[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/,"fullPattern":/^[^@]*<[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?>$/,"allowName":false,"message":"Значение «Email» не является правильным email адресом.","enableIDN":false,"skipOnEmpty":1});}}], []);
jQuery(document).pjax("#SubscriptionSidebar a", "#SubscriptionSidebar", {"push":true,"replace":false,"timeout":1000,"scrollTo":false});
jQuery(document).on('submit', "#SubscriptionSidebar form[data-pjax]", function (event) {jQuery.pjax.submit(event, '#SubscriptionSidebar', {"push":true,"replace":false,"timeout":1000,"scrollTo":false});});
jQuery('#SubscriptionFooter-form').yiiActiveForm([{"id":"subscriptionfooter-email","name":"email","container":".field-subscriptionfooter-email","input":"#subscriptionfooter-email","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Email»."});yii.validation.email(value, messages, {"pattern":/^[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/,"fullPattern":/^[^@]*<[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?>$/,"allowName":false,"message":"Значение «Email» не является правильным email адресом.","enableIDN":false,"skipOnEmpty":1});}},{"id":"subscriptionfooter-checkbox","name":"checkbox","container":".field-subscriptionfooter-checkbox","input":"#subscriptionfooter-checkbox","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Нужно согласиться с правилами","requiredValue":1});}}], []);
jQuery(document).pjax("#SubscriptionFooter a", "#SubscriptionFooter", {"push":true,"replace":false,"timeout":1000,"scrollTo":false});
jQuery(document).on('submit', "#SubscriptionFooter form[data-pjax]", function (event) {jQuery.pjax.submit(event, '#SubscriptionFooter', {"push":true,"replace":false,"timeout":1000,"scrollTo":false});});
});</script> </body>
</html>`
from yii2-comments.
Когда в файле comments.js для теста пишу alert(); то при обнавлении страници он отрабатывает. Значит файл подключается, но плагин не работает при нажатии на ссылку.
from yii2-comments.
Попробуйте следующий способ:
- Создать папку comments например в папке views вашего приложения рядом с папкой site.
- В ней создать два файла, index.php и _comments.php
Код для index.php
<?php
use yii\widgets\Pjax;
/* @var $this \yii\web\View */
/* @var $comments array */
/* @var $commentModel \yii2mod\comments\models\CommentModel */
/* @var $maxLevel null|integer comments max level */
/* @var $encryptedEntity string */
/* @var $pjaxContainerId string */
/* @var $formId string comment form id */
?>
<?php Pjax::begin([
'enablePushState' => false,
'timeout' => 10000,
'id' => $pjaxContainerId
]); ?>
<div class="comments row">
<div class="col-md-12 col-sm-12">
<div class="title-block clearfix">
<h3 class="h3-body-title"><?php echo Yii::t('yii2mod.comments', 'Comments'); ?></h3>
<div class="title-separator"></div>
</div>
<ol class="comments-list">
<?php echo $this->render('_comments', ['comments' => $comments, 'maxLevel' => $maxLevel]) ?>
</ol>
<?php if (!Yii::$app->user->isGuest): ?>
<?php echo $this->render('@vendor/yii2mod/yii2-comments/widgets/views/_form', [
'commentModel' => $commentModel,
'encryptedEntity' => $encryptedEntity,
'formId' => $formId
]); ?>
<?php endif; ?>
</div>
</div>
<?php Pjax::end(); ?>
для _comments.php я использовал ваш код
- В месте где вы добавляете виджет, указать путь к новому темплейту:
<?php echo Comment::widget([
'model' => $model,
'commentView' => '@app/views/comments/index' // Вот эта строка
]); ?>
И после этого почистить папку assets в папке web, и заново попробовать. Этот способ проверил, должен работать.
from yii2-comments.
Попробовал. Ни чего не изменилось. Вероятнее всего я где-то, что-то забыл .
from yii2-comments.
Еще меня смущает в вашем коде вот эта строка:
<script src="/work/yii2-Blog/css/comments/comments.js"></script>
Путь к файлу comments.js должен быть примерно такой же как у activeForm.js в вашем примере, а он почему то ведет в папку css.
В моем случае:
<script src="/assets/df2db1f0/jquery.js"></script>
<script src="/assets/bc2e7155/yii.js"></script>
<script src="/assets/ef25f117/js/comment.js"></script>
<script src="/assets/bc2e7155/yii.validation.js"></script>
<script src="/assets/bc2e7155/yii.activeForm.js"></script>
<script src="/assets/75c0633a/jquery.pjax.js"></script>
<script src="/assets/918ca098/js/bootstrap.js"></script>
Честно говоря не смогу вам помочь, могу посоветовать установить просто чистый yii2/basic или наш yii2mod/base и в нем протестировать этот виджет может тогда найдете где допустили ошибку.
Eще раз проверил ваш код на чистом шаблоне, он работает прекрасно.
from yii2-comments.
Я установил скрипты и стили в папку web, чтобы не перезаписывалось туда же в assets, а подключалось оттуда.
from yii2-comments.
Предлагаю так попробовать:
- Убедится что вы не правили файлов на прямую в папке vendor/yii2mod/comments.
- Убедится что по умолчанию(примеры в документации) виджет работает правильно.
- После того как вы убедились в том что виджет корректно работает, добавить свои шаблоны(пример) и проверить их.
from yii2-comments.
Ок. Спасибо. Попробую.
А вообще код грамотно написан. Есть чему поучиться.
from yii2-comments.
Спасибо, главное чтобы работал :)
from yii2-comments.
Related Issues (20)
- При переопределении имени таблицы в своей модели не работает менеджмент
- Не работает с включенным чпу HOT 1
- Default comment status
- Initialization problem: No new migrations found. Your system is up-to-date. HOT 1
- Problem with the encoding of the createComment using CommentWidget
- Are you accepting PRs at the moment? HOT 1
- Fail migrate m161114_094902_add_url_column_to_comment_table
- 404 - Create Comment Not Found HOT 1
- How to know count of comments from relatedTo ?
- Collaboration with https://docs.infiniteajaxscroll.com/
- No Reason Phrase HOT 7
- How to update entity model using event afterCreate? HOT 1
- API availability.
- "Carbon 1 is deprecated" warning HOT 3
- When is the next release planned? HOT 3
- Do you take donate? HOT 2
- Add attachments and editor
- Readonly Comments Feature
- Reinitialize the javascript methods HOT 2
- Не накатываются миграции HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yii2-comments.