我使用以下代码来实现一些 jquery-ui 功能:
<?php $this->Html->script(array(
'jquery-ui-1.8.16.custom.min.js',
'jquery-1.6.2.min.js'
),
null,
array(
'inline'=>'false',
'once'=>'true'
)
);
?>
<script>
jQuery(document).ready(function(){
$('.cv .collapsable').click(function() {
$(this).next().toggle('slow');
return false;
}).next().hide();
});
</script>
目标元素/类是元素和嵌套元素。然而,jquery 功能正在工作,但代价是 php array_merge() 错误,如下所示:
Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array [CORE/Cake/View/Helper/HtmlHelper.php, line 478]
Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array [CORE/Cake/View/Helper/HtmlHelper.php, line 478]
Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array [CORE/Cake/View/Helper/HtmlHelper.php, line 478]
我做错了什么吗?这是一个错误吗?我尝试将
<script>
标签添加到 default.ctp 布局中,但也无法获取 URL。我已经用 cakephp 1.3 做到了这一点,所以我对现在遇到的问题有点困惑。任何帮助将不胜感激。
这是我的完整代码: PHP:
<?php $this->Html->script(
array(
'jquery-1.6.2.min'
),
null,
array(
'inline'=>'false',
)
); ?>
jquery:
<script>
jQuery(document).ready(function() {
$('div.collapsable').click(function() {
$(this).next().slideToggle("slow");
return false;
});
});
</script>
我已经删除了 jquery-ui 脚本来简化事情 - 当我这样做时,我现在只抛出两个“array_merge”错误。不过,如果我删除“null”(它甚至不应该存在,因为该函数只接受两个参数),我就会失去所有功能(错误也会消失)。
但是事情变得更奇怪了!
我查看了 cake->core->lib->helper->htmlhelper 并检查了该函数;它有一行检查
$options
数组是否为布尔值。如果我改为使用此代码:
<?php $this->Html->script(
array(
'jquery-1.6.2.min'
),
false
); ?>
我失去了指定
inline = true
或 once = true
的能力,但是我至少获得了完整的功能,而没有 array_merge()
错误。这是2.0的bug吗?
根据文档页面,
$this->Html->script()
仅接受 2 个参数。删除 null
就可以了。
此外,您不应在脚本文件名末尾包含
.js
。
您的代码应如下所示:
<?php
$this->Html->script(
array(
'jquery-ui-1.8.16.custom.min',
'jquery-1.6.2.min'
),
array(
'inline'=>'false',
'once'=>'true'
)
);
?>