【问题标题】:CakePHP Notification system with jquery带有 jquery 的 CakePHP 通知系统
【发布时间】:2014-02-21 17:32:39
【问题描述】:

我无法理解在 Cake 中实现通知系统的最佳方式。我正在使用 Pines Notify Framework 进行视觉效果。

我希望这些通知出现在每个页面上,因此我认为在应用程序控制器中使用的组件可以完成这项工作,但我不确定如何与组件中的视图进行交互。

基本上,当满足某些条件时,我需要组件在当前控制器的视图中调用 Jquery 脚本。

【问题讨论】:

    标签: jquery cakephp view notifications components


    【解决方案1】:

    基本上,当满足某些条件时,我需要组件 在当前控制器的视图中调用 Jquery 脚本。

    您知道服务器端语言和客户端语言之间的区别吗?这是行不通的。 php无法与浏览器中的JS对话。

    您必须使用Websockets 或AJAX 和长轮询Comet 使JS 脚本通过JSON 与服务器通信以从那里获取通知。

    【讨论】:

      【解决方案2】:

      我最终做的只是让 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 菜鸟,但它确实有效。

      【讨论】:

        【解决方案3】:

        安装:

        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) 将下面的 sn-p 添加到您的主模板中:

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

        4) 将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/

        【讨论】:

          猜你喜欢
          • 2013-03-31
          • 1970-01-01
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 2016-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多