1

我有一个控制器 pages.php:

 class Pages extends CI_Controller {
     public function index($page = 'home')
     {

      if ( ! file_exists('application/views/pages/'.$page.'.php'))
      {
           // Whoops, we don't have a page for that!
           show_404();
      }
      $this->lang->load('common/menu.php');
      $this->lang->load('pages/'.$page.'.php');
      $data = array();
      $this->load->helper('slideshow');
      $data['slideshow'] = get_image_array(); 

      $this->load->view('templates/common/header', $data);
      $this->load->view('modules/slideshow', $data);
      $this->load->view('pages/'.$page, $data);
      $this->load->view('templates/common/footer', $data);
     }
}

我的 slideshow_helper 文件:

function get_image_array(){
    $images = array(img("slideshow/desktop/home1.jpg", "one"),img("slideshow/desktop/home2.jpg", "two"),img("slideshow/desktop/home3.jpg", "three"));
    $captions = array("first image", "second image", "third image");
    return array_combine($images, $captions);
}

和幻灯片视图:

<div class="container">
    <div class="row">
        <div class="col-xs-12">
            <div id="carousel-desktop" class="carousel slide  visible-md visible-lg">
                <ol class="carousel-indicators">
                    <li data-target="#carousel-desktop" data-slide-to="0" class="active"></li>
                    <li data-target="#carousel-desktop" data-slide-to="1"></li>
                    <li data-target="#carousel-desktop" data-slide-to="2"></li>
                </ol>
                <div class="carousel-inner">
                    <?php $i = 1; ?>
                    <?php foreach ($image as $imageSrc => $caption ):?>
                    <?php $item_class = ($i == 1) ? 'item active' : 'item'; ?>
                    <div class="<?php echo $item_class; ?>">
                        <?php  echo $image; if($caption != ""){ ?>
                            <div class="carousel-caption">
                                <?php  echo $caption;?>
                            </div>
                        <?php } ?>
                    </div>
                    <?php $i++; ?>
                    <?php endforeach; ?>
                 </div>
                 <a class="left carousel-control" href="#carousel-desktop" data-slide="prev">
                     <span class="icon-chevron-sign-left"></span>
                 </a>
                 <a class="right carousel-control" href="#carousel-desktop" data-slide="next">
                     <span class="icon-chevron-sign-right"></span>
                 </a>
            </div>
            <br />
         </div>
      </div>
   </div>
<br />
</div>

不幸的是,这不起作用我错过了什么吗?我收到以下错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: image

Filename: pages/home.php

-和-

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: pages/home.php

还是完全错误?我应该指出,该站点将无法访问数据库。

当我在视图文件中有数组时,它可以工作。

我想要做的是每个页面都有一个不同的模型/帮助文件,因为这个控制器的每个页面都会有一个幻灯片,但每个页面都有不同的图像。因此,与其无数次地重新创建视图部分,我只想为每个页面创建一个新数组。我正在考虑使用类似的东西:

$this->load->helper('pages/'.$page); 
-or-
$this->load->model('pages/'.$page.'.php');

这样每个页面都有自己的模型/帮助文件管理器,但显然由于我无法让第一位工作,我不知道第二位是否可以工作。

任何帮助将不胜感激

4

1 回答 1

2

您将图像存储在$data['slideshow'];索引中,对吗?因此,只需$slideshow在您的视图中使用:

<?php foreach ($slideshow as $imageSrc => $caption ): ?>
于 2013-08-23T11:55:17.793 回答