我想从Controller中插入一些像这样的代码
的代码"<"script> setInterval(function(){ alert("Hello"); }, 3000);"<"/script>
怎么做?
答案 0 :(得分:3)
在PhalconPHP中有多种方法可以做到这一点。根据您的需要,您可能只能逃脱:
$js='setInterval(function(){alert("Hello");},3000);';
$this->view->js=$js;
然后从视角来看,你做了:
<script><?php echo $js; ?></script>
如果您需要从嵌套视图中将JavaScript插入顶级 index.phtml
,则完成此操作的方法是首先编辑ControllerBase.php
并定义新收藏:
$this->assets->collection('footer');
然后从顶级index.phtml文件中添加对footer
集合的引用:
<body>
<?php echo $this->getContent(); ?>
<?php $this->assets->outputJs('footer'); ?>
</body>
如果您只想在文档中添加动态位置,则可以使用output('footer')
来插入任何类型的HTML。请注意,集合专门用于管理CSS和JavaScript,因此也是outputJS方法,但也可以为其他目的处理杂项代码。还有outputCSS
,outputInlineJs
,outputInlineCss
,outputInline
和output
。请参阅:
http://php-phalcon-docs.readthedocs.org/en/latest/api/Phalcon_Assets_Manager.html
然后编辑您的ControllerBase.php
以将资产初始化为空集合:
$this->assets->collection('footer');
(如果跳过此步骤,如果您的顶级index.phtml文件尝试输出不存在的集合的内容(如果您从未写入它),则代码将看到错误,因此始终将其初始化为空集合所以它存在。)
最后,从您想要使用的控制器,您可以:
$this->assets->collection('footer')->addInlineJs($js);
其中$js
是您的内嵌JavaScript,不包括脚本标记
您也可以使用
使用外部JavaScript文件
->addJs(...)
。默认情况下,它将相对于您的应用程序目录,自动插入/
。如果您不喜欢此功能,可以将第二个参数设置为false
,然后您可以指定自己的潜在客户/
或将资源指向其他域。
对于可以添加到集合的资产,请参阅:
https://docs.phalconphp.com/en/latest/api/Phalcon_Assets_Collection.html
请注意,您还可以从视图中向群集中添加资源,这些更改仍会显示在最顶层的index.phtml
中。
值得注意的是,您不需要实际使用集合,您可以简单地使用没有集合的资产,但我认为集合更强大,因为您可以将它们命名为“如果您需要管理多种数据集合,则需要另一级别的分离。
就你想要完成的事情而言,如果你只是想给用户留言,这就是Phalcon flash
的用途,而不是与用于播放视频的Adobe Flash相混淆。 Phalcon的flash
用于向用户闪烁消息,例如错误消息,或者您的表单提交成功的消息类型。请参阅:
https://docs.phalconphp.com/en/latest/reference/flash.html
如果您仍然对Flash是什么感到困惑,可以看一下它的输出是什么,您可以在屏幕截图中看到:https://docs.phalconphp.com/en/latest/_images/invo-2.png
这分别是->error(...)
和->notice(...)
的输出。闪存组件会跟踪您要向用户显示的消息集合。然后,一旦您准备好向用户显示它们,您就可以打电话:
您认为<?php echo $this->flash->output(); ?>
。最好从最顶层的模板或模板中进行此调用,该模板始终包含在您的最顶层模板中,例如导航模板,以便您可以轻松地向用户显示消息。它对调试也很有用。我建议使用twitter bootstrap来设置flash输出的样式。
您可能会觉得有用的一些示例应用程序:
https://github.com/phalcon/invo
https://github.com/phalcon/vokuro
https://github.com/phalcon/website
https://github.com/phalcon/forum