2014-02-21 132 views
0

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

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

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

回答

0

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

你知道服务器端和客户端语言的区别吗?这是行不通的。 PHP无法在浏览器中与JS交谈。

您必须使用Websockets或带有长轮询的AJAX,Comet才能使JS脚本通过JSON与服务器通信,以便从那里获取通知。

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的小白这可能是一个粗略的答案,但它的工作原理。

-1

安装目录:

1)包括在你的主模板涡轮tribble.js脚本:

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

2)包括在你的主模板涡轮tribble.css样式表:

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

3)将下面的代码段添加到您的主模板中:

<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以及来自您的控制器:

​​

更多信息,发现这里http://turbo-tribble.ml/