2013-03-28 3 views
1

Я только начинаю царапать поверхность в yii, и у меня есть время получить любые расширения слайдера изображения для работы. Я ссылался на http://www.yiiframework.com/doc/guide/1.1/en/extension.use и считаю, что моя проблема связана с инициализацией расширения, но я не уверен. Самое последнее расширение, которое я пытаюсь использовать, - http://www.yiiframework.com/extension/s3slider/.yii extension assist

До сих пор я загрузил расширение, распаковал и разместил в/protected/extensions. У меня есть два изображения, которые я пытаюсь сдвинуть между находящимися в/изображениях. Я поместил предложенный код в моем /protected/views/layouts/main.php и обновляется массив $ изображения следующим образом:

<?php 

    $this->widget('application.extensions.s3slider.S3Slider', 
    array(
     'images' => array(
       array('images/giveBack.png', 'Give Back'), 
       array('images/priceGuarantee.png', 'Price Guarantee'), 
     ), 
      'width' => '420', 
      'height' => '300', 
    ) 
);?> 

Когда я перезарядить мою страницу я получаю следующее сообщение об ошибке:

PHP notice 
Array to string conversion 
/protected/extensions/s3slider/S3Slider.php(71) 
59   $cssparams = array(
60    'name' => $this->name, 
61    'width' => $this->width, 
62    'height' => $this->height, 
63    'opacity' => $this->opacity, 
64  ); 
65   $clientScript->registerCssFile($baseUrl . '/s3Slider.css.php?data=' . urlencode(base64_encode(serialize($cssparams)))); //http_build_query($cssparams) 
66 
67   $clientScript->registerCoreScript('jquery'); 
68 
69   $clientScript->registerScriptFile($baseUrl . '/s3Slider.js'); 
70 
71   $js = "jQuery('#{$this->name}').s3Slider($options);"; 
72   $cs->registerScript('Yii.S3Slider' . $this->name, $js); 
73   echo $this->makeImages(); 
74  } 
75 
76 } 
77 ?> 

Мой трассировки стека указывает:

/protected/views/layouts/main.php(60): CBaseController->widget("application.extensions.s3slider.S3Slider", array("images" => array(array("images/giveBack.png", "Give Back"), array("images/priceGuarantee.png", "Price Guarantee")), "width" => "420", "height" => "300")) 
55      array('images/priceGuarantee.png', 'Price Guarantee'), 
56    ), 
57    'width' => '420', 
58    'height' => '300', 
59  ) 
60 );?> 
61 
62 <?php 
63 $this->widget('zii.widgets.CBreadcrumbs', array(
64    'links'=>$this->breadcrumbs, 
65  )); ?><!-- breadcrumbs -->  

Любое руководство по этому вопросу будет высоко ценится!

спасибо.

+0

Простое выключение Обратите внимание на ошибки, в противном случае вы всегда будете получать такие ошибки в стороннем программном обеспечении. – ole

ответ

1

Вы успешно установили это расширение, однако в нем есть явная ошибка. Обратите внимание, что в строке 52 $options объявлен

$options = array(); 

Затем проверяется, если не пусто:

if (!empty($options)) { 
    $options = CJavaScript::encode($options); 
} 

Так $options пусто, так что не кодируется строкой с encode, поэтому:

$js = "jQuery('#{$this->name}').s3Slider($options);"; 

PHP показывает уведомление о преобразовании массива в строку. Удалить условие для проверки, если оно пустое, и оно будет кодировать пустой массив и должно работать. Автор расширения, вероятно, имеет уведомления об отключенном, который является плохой практикой. Целесообразно видеть уведомления на стадии разработки.

УКАЗАНИЕ: Когда вы поправляетесь в yii, наложение расширительной оболочки для jQuery-плагинов будет доступно для вас.

+1

Спасибо, Питер. Ваше решение работало как прелесть. Я видел переменную $ options, но не смотрел фрагмент cJavaScript :: encode. Ваше время было очень оценено и, по крайней мере, я не был полностью в своем уме. Ждем выполнения вашего подсказки! – user1459766