Optional fields js_after_vote
loveorigami opened this issue · comments
Перенесу обсуждение сюда, т.к. есть что обмыслить...
Идею с js_before_vote и js_afrter_vote я понял.
Но основной вопрос остается открытым - как тут перехватить сообщения
и вывести их в плагине (например - noty)
Загвоздка в том, что в зависимости от результата действия, должен выводится соответствующий тип сообщения
$message = "Ваш голос учтен";
$type = "success";
или
$message = "Вы не авторизированы";
$type = "error";
<script type="text/javascript">
noty({
text: "' . $message . '",
type: "' . $type . '",
layout: "topRight",
timeout: 1500, // delay for closing event. Set false for sticky notifications
force: true
});
</script>
У себя я решал через виджет, обрабатывающий Flash сессию
#3 (comment)
Действительно, про доступность результата я что-то не подумал... Но можно просто перенести js_after_vote
(или создать ещё одно свойство) из события complete
в событие success
(после js_result
), там будет доступна data
.
На данном этапе в data нужны message и type
Например, так:
<?php echo \chiliec\vote\Display::widget([
'model_name' => 'blog_post', // name of current model
'target_id' => $model->id, // id of current element
'js_after_vote' => "
message = data.content;
type = 'error';
if(typeof(data.success)!=='undefined') { type = 'success'; }
if(typeof(data.changed)!=='undefined') { type = 'information'; }
noty({
text: message,
type: type,
layout: 'topRight',
timeout: 1500, // delay for closing event. Set false for sticky notifications
force: true
});
",
]); ?>
да. то что нужно !
сделал
'js_after_vote' => "voting (data)",
// а в своем js-файле написал соответсвующую функцию. Пока работает ).
Можно добавить в док, если что.
Изменил немного работу с событиями, теперь нужно писать
'js_show_message' => "voting (data)",
это перезапишет стандартное действие отображения сообщения.