【问题标题】:how to call javascript function in layout content or view如何在布局内容或视图中调用 javascript 函数
【发布时间】:2019-02-24 23:54:46
【问题描述】:
我在布局视图中调用 javascript 函数。我对不同的视图有一个共同的布局,但有 2 个视图,特别是我想检查screen width。在布局中,我可以定义脚本,但它们将适用于我的整个应用程序,所以我只想在 2 个视图中特别提及它们。我本可以制作 2 个 javascript 文件并将它们包含在各自的视图中,但我认为这不是一个好的选择。
我将如何处理这个问题?
我有两个视图 mobile-view 和 desktop-view。
【问题讨论】:
标签:
javascript
cakephp
cakephp-3.0
【解决方案1】:
选项 1:
将 JavaScript 放入一个小的 .js 文件中,并将该文件包含在带有 echo $this->Html->script('...'); 的特定视图中
选项 2:
创建一个包含 JavaScript 的元素 (echo $this->Html->scriptBlock('...');),并通过 echo $this->element('...'); 从每个视图中引用该元素
【解决方案2】:
使用HtmlHelper,您可以缓冲JavaScript 脚本块并将它们输出到<head>,或者最好在<body> 的末尾,如下所示:
你的看法
// Start a script block to be echoed at the end of the <body>
$this->Html->scriptStart(['block' => 'bottomScripts']);
echo "alert('Hi, it is JavaScript.');";
$this->Html->scriptEnd();
除非您在布局或视图中输出缓冲在名为 bottomScripts 的块内的脚本和/或脚本块,否则不会发生任何事情:
你的布局
…
<?= $this->fetch('bottomScripts'); ?>
</body>
</html>