如何在php phalcon框架中插入自定义内联javascript代码

时间:2015-11-04 08:50:14

标签: phalcon

我想从Controller中插入一些像这样的代码

的代码
"<"script> setInterval(function(){ alert("Hello"); }, 3000);"<"/script>

怎么做?

1 个答案:

答案 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方法,但也可以为其他目的处理杂项代码。还有outputCSSoutputInlineJsoutputInlineCssoutputInlineoutput。请参阅:
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

进一步阅读:
https://docs.phalconphp.com/en/latest/index.html