2017-01-19 46 views
2

我想要在我的主佈局中使用sjaakp \ cycle \ Cycle ::小部件以獲得橫幅幻燈片。將代碼直接放入主佈局時,效果相當不錯。 但爲了使佈局更具可讀性,我想放的代碼放到一個單獨的PHP文件,說_banner-滑動show.php和使用YII2將循環放在局部視圖中並在佈局中使用它 - 包括vs渲染?

<?php $this->render('_banner-slide-show');?> 

,但它不工作。這些頁面是可見的,但橫幅幻燈片不會出現,並且頁面源代碼中沒有圖像的痕跡。

如果我使用

<?php include ('_banner-slide-show.php') 

它工作得很好試。

我的問題是爲什麼它不適用於渲染?

這裏是_banner-滑動show.php代碼

    <?php 
      use yii\data\ArrayDataProvider; 
      use yii\helpers\Url; 


       // $photos = scandir($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'banner', 1); 
        $photos = scandir($_SERVER['DOCUMENT_ROOT'] 
          . DIRECTORY_SEPARATOR . '..' 
          . DIRECTORY_SEPARATOR . '..'. 
          '/images/admin/banner', 1); 
        $dataPhotos = array(); 
        foreach ($photos as $photo) { 
         // array_push($dataPhotos, ['photo' => '@web/banner/' . $photo]); 
         $url=Url::to(['/image/view', 'filePath' => 'admin/banner/'.$photo]); 
array_push($dataPhotos,['photo' => $url]) ; 
        } 

        array_pop($dataPhotos); 
        array_pop($dataPhotos); //remove . and .. 


        $dataProv = new ArrayDataProvider(['allModels' => $dataPhotos, 
         'pagination' => false]); 
        ?> 
        <?= 
        sjaakp\cycle\Cycle::widget([ 
         'dataProvider' => $dataProv, 
         'imgAttribute' => 'photo', 
         // 'captionAttributes' => ['photo'], 
         // 'overlayAttributes' =>['photo'], 
         'options' => [ 
          'captionPlugin' => 'caption2', 
          'captionFxOut' => 'slideUp', 
          'captionFxIn' => 'slideDown', 
          'allow-wrap' => false, 
          'auto-height' => 0, 
          'fx' => 'fadeOut', 
          'timeout' => 8000, 
          'speed' => 2000, 
         // 'overlay' => '#ovl' 
         ], 
        ]) 
        ?> 
        <!-- <div id="ovl" class="cycle-overlay"></div> --> 
+0

你放置的_banner-滑動show.php?可能是你需要一個適當的路徑設置.. – scaisEdge

+0

你確定_banner-slide-show.php在主文件夾中? – giovaZ

+0

它被放置在與佈局main.php相同的文件夾中 – meaulnes

回答

0

您需要打印的$this->render()返回statment在頁面上。

<?php echo $this->render('_banner-slide-show');?>

<?= $this->render('_banner-slide-show');?>

問候金丹

+0

謝謝。它現在可以使用。 – meaulnes