Comments (20)
Здравствуйте, скиньте пожалуйста код примера в котором у вас ошибка
from yii2-comments.
Какая именно из ошибок вас интересует ?
from yii2-comments.
1 исправим, нужен код для воспроизведения 2 проблемы
from yii2-comments.
Ок, я попытаюсь более детально описать вторую проблему потому как просто кодом не обойтись.
Допустим у вас есть сущность Product
к которой применяеться ваш виджет, в таблице товаров 100+, на страницу вы выводите только 10 случайных товаров тоесть в SQL запросе для выборки товаров вы используете ORDER BY rand()
после чего выводите их на страницсау код моего SQL запро:
$query = Product::find()->select(product.*, case when product.currency_id is not null then product.price * currency.rate when program.currency_id is not null then product.price * cur.rate else product.price * (SELECT rate from currency where title = \'USD\') END priceE') ->where(['shoplook' => 1, '
product.
is_available' => 1,])->orderBy(new Expression('rand()'))->limit(10);
from yii2-comments.
окей, понял. То есть вы виджет применяете для каждого продукта?
from yii2-comments.
Совершенно верно
from yii2-comments.
окей, спасибо. В ближайшее время постараюсь исправить.
from yii2-comments.
Спасибо
from yii2-comments.
При использовании параметра 'showDeletedComments' => true выдвет Unknown Property по всей видимости вы просто забыли убрать его со страници описания в отделе Basic example: хотя параметр весьма полезный как альтернатива вместо отображения тексту Comment was deleted.
сделайте composer update, showDeletedComments был добавлен вчера.
from yii2-comments.
Ок
from yii2-comments.
Добавил возможность установить id для pjax. Сделайте пожалуйста composer update.
<?php echo \yii2mod\comments\widgets\Comment::widget([
'pjaxContainerId' => 'comment-pjax-container-' . $user->id
]); ?>
Сейчас попробовал применить виджет к разным юзерам, которые выбираются случайно. Перезагрузки страницы не было, все работало корректно.
Вот код:
- Нахожу юзеров
$users = UserModel::find()->orderBy(new Expression('rand()'))->all(); // в тестовой базе 6 юзеров
- Вывод на фронтенде:
<div class="row">
<?php foreach ($users as $user): ?>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><?php echo $user->email; ?></div>
<div class="panel-body">
<?php echo \yii2mod\comments\widgets\Comment::widget([
'model' => $user,
'formId' => 'comment-form-' . $user->id,
'pjaxContainerId' => 'comment-pjax-container-' . $user->id
]); ?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
from yii2-comments.
Вы выбераете всех юзеров, для того что бы выпала ошибка выберите одного или два (но не всех)
from yii2-comments.
первый и второй баг касались orderBy(new Expression('rand()'))
но второй баг видет за условия что только несколько юзеров будут отображены
from yii2-comments.
А если так
- Выборка юзеров
$users = UserModel::find()->orderBy(new Expression('rand()'))->limit(2)->all();
- А на фронтенде не много по другому генерировать formId, и pjaxContainerId
<?php foreach ($users as $key => $user): ?>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><?php echo $user->email; ?></div>
<div class="panel-body">
<?php echo \yii2mod\comments\widgets\Comment::widget([
'model' => $user,
'formId' => 'comment-form-' . $key,
'pjaxContainerId' => 'comment-pjax-container-' . $key
]); ?>
</div>
</div>
</div>
<?php endforeach; ?>
Перезагрузки вроде бы нет.
from yii2-comments.
Но в способе который выше, pjax контейнер перезагрузится, но не факт что там будет ваш коммент, так как это random. Если вы хотите чтобы он перезагрузился на нужную запись из рандомной выборки, то тут я не смогу помочь. Так как с таким не сталкивался.
from yii2-comments.
Хорошо, спасибо за помощь и апдейт модуля.
Если найду решение с обезательно сообщю.
from yii2-comments.
не за что, в итоге мало чем помог)
from yii2-comments.
Нашел хак, корявый конечно. Идея в том чтобы в экшене поймать pjaxId при pjax реквесте, исходя из его ид найти юзера, и смержить основную выборку с выборкой в которой будет этот юзер(для которого непосредственно добавляется комментарий).
Также нужно добавить метод indexBy при выборке
- Вот код контроллера
$users = UserModel::find()->orderBy(new Expression('rand()'))->indexBy('id')->limit(2)->all();
if (Yii::$app->request->getIsPjax()) {
$pjaxId = Yii::$app->request->getQueryParam('_pjax');
$userId = substr($pjaxId, -1);
$users = ArrayHelper::merge($users, UserModel::find()->where(['id' => $userId])->indexBy('id')->all());
}
- Код вьюхи, в pjaxContainerId последний символ это id юзера
<?php foreach ($users as $id => $user): ?>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><?php echo $user->email; ?></div>
<div class="panel-body">
<?php echo \yii2mod\comments\widgets\Comment::widget([
'model' => $user,
'formId' => 'comment-form-' . $id,
'pjaxContainerId' => 'comment-pjax-container-' . $id
]); ?>
</div>
</div>
</div>
<?php endforeach; ?>
В данном случае в ответе всегда будет запись для которой вы добавили коммент.
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.