CakePHP Система уведомлений с JQuery

0

У меня возникли проблемы с пониманием лучшего способа внедрения системы уведомлений в Cake. Я использую Pines Notify Framework для визуальных эффектов.

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

В принципе, когда выполняются определенные условия, мне нужно, чтобы компонент вызывал сценарий Jquery в представлении текущего контроллера.

Теги:
view
cakephp
notifications
components

3 ответа

0

То, что я закончил, было просто с помощью setFlash() вызвать специальное уведомление, которое запустило событие pnotify.

Т.е. в контроллере

$this->Session->setFlash('Something occurred.', 'notify');

А затем в notify.ctp

<script>var stack_topleft = {"dir1": "down", "dir2": "right", "push": "top"};
$(document).ready(function() {
$.pnotify.defaults.styling = "bootstrap3";
$.pnotify.defaults.history = false;
$.pnotify({
    title: 'Regular Success',
    text: '<?php echo $message; ?>'
});
});</script>

Это может быть отрывочный ответ, поскольку я немного cakePHP noob, но он работает.

0

В принципе, когда выполняются определенные условия, мне нужно, чтобы компонент вызывал сценарий Jquery в представлении текущего контроллера.

Вы знаете разницу между серверной и клиентской языками? Это не сработает. php не может разговаривать с JS в браузере.

Вам придется использовать Websockets или AJAX с длинным опросом, комета, чтобы заставить JS-скрипт обмениваться данными с сервером через JSON, чтобы получать уведомления оттуда.

-1

Переустановленное:

1) Включите скрипт turbo-tribble.js в свой основной шаблон:

echo $this->Html->script([
    'jquery.min', // JQuery is required
    'turbo-tribble'
]);

2) Включите таблицу стилей turbo-tribble.css в свой основной шаблон:

echo $this->Html->css([
    'turbo-tribble'
]);   

3) Добавьте нижеприведенный фрагмент к основному шаблону:

<div id="turbo-tribble">
    <?php echo $this->Flash->render('tribble'); ?>
</div>    

4) Добавьте turbo_tribble.ctp в turbo_tribble.ctp src/Template/Element/Flash;

5) Добавьте код из AppController.php в свой AppController.php;

Более того, вы можете легко использовать этот модуль уведомлений из своего jQuery, а также из своих контроллеров:

// from jQuery
$('.selector').on('click', function() {
    // your logic here
    $tt.setFlash('Some good news!', 'success');
})

// from php
public function index()
{
    // your logic here
    $this->setFlash('Some notification', self::NOTICE);
}

Дополнительная информация находится здесь http://turbo-tribble.ml/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню