Cakephp 2.0: Htmlhelper throwing array_merge () ошибка при использовании Html-> script () - PullRequest
0 голосов
/ 03 января 2012

Я использую следующий код для реализации некоторых функций 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?

1 Ответ

0 голосов
/ 03 января 2012

За на странице документации , $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'
    ) 
); 
?>
...