1

私は yii で表面をなぞり始めたばかりで、画像スライダーの拡張機能を動作させるのにかなりの時間を費やしています。http://www.yiiframework.com/doc/guide/1.1/en/extension.useを参照しましたが、私の問題は拡張機能の初期化に関連していると思いますが、よくわかりません。私が使用しようとしている最新の拡張機能はhttp://www.yiiframework.com/extension/s3slider/です。

これまでのところ、拡張機能をダウンロードし、解凍して /protected/extensions に配置しました。/images にある 2 つの画像の間をスライドさせようとしています。提案されたコードを /protected/views/layouts/main.php に配置し、$images 配列を次のように更新しました。

<?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 -->    

これに関するガイダンスをいただければ幸いです。

ありがとうございました。

4

1 に答える 1

1

この拡張機能は正常にインストールされましたが、明らかなバグがあります。$options52行目で宣言されていることに注意してください

$options = array();

次に、空でないかどうかがチェックされます。

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

So$optionsは空なので、 で文字列にエンコードされていないencodeため、次のようになります。

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

PHP は、配列から文字列への変換に関する通知を表示します。空かどうかをチェックする条件を削除すると、空の配列がエンコードされ、機能するはずです。拡張機能の作成者はおそらく通知を無効にしていますが、これは悪い習慣です。開発段階で通知を確認することをお勧めします。

ヒント: yii に慣れると、jquery プラグイン用の拡張ラッパーを簡単に作成できるようになります。

于 2013-03-28T19:58:35.810 に答える