0

我的视图文件中有以下数组(有效):

<?php
$images = array(img("slideshow/demo1.png", "one"),img("slideshow/demo2.png", "two"),img("slideshow/demo4.png", "three"));

$captions = array("first image", "second image", "third image");
foreach (array_combine($images, $captions) as $image => $caption ) {
echo "<li>", $image, "<div class=\"orbit-caption\">",$caption,"</div></li>";
}
?>

但是,我希望在显示不同图像的多个页面的幻灯片文件中使用相同的 foreach,所以我认为最简单的方法是为需要不同数据的每个页面创建一个模型页面,并将图像和标题放在一个数组中,如上. 我曾尝试搜索如何做到这一点,但我发现的所有解决方案都与数据库中的相关,不幸的是这不是一个选项。

另外我想对其进行编码,以便如果没有图像标题,则标题代码不会运行,即:

"<div class=\"orbit-caption\">",$caption,"</div>

我尝试过的选项或者我得到一个空白的半透明框,即它放下:

<div class="orbit-caption"></div>

或者,如果我有字幕,我什么也得不到。

我了解少量的 php,但我更像是一名设计师,并且对 MVC 相当陌生,所以如果有人在白痴指南中有解决方案,我不会被冒犯:) 只是想学习。如果有人有更好的解决方案,请分享

4

1 回答 1

0

在文件夹中创建一个助手application/helpers并将其命名slideshow_helper.php,现在,在slideshow_helper.phpwrite 中:

<?php
function get_image_array(){
    $images = array(img("slideshow/demo1.png", "one"),img("slideshow/demo2.png", "two"),img("slideshow/demo4.png", "three"));
    $captions = array("first image", "second image", "third image");
    return array_combine($images, $captions);
}
?>

在加载 的控制器函数view for slideshow page中,编写:

<?php
$data   = array();
$this->load->helper('slideshow');
$data['slideshow'] = get_image_array();        #will return the image array from the helper
$this->load->view('view', $data);              #load the image array in the view
?>

在您的视图中:

<?php
foreach ($image as $imageSrc => $caption ) {
    if($caption != ""){
        echo "<li>", $imageSrc, "<div class=\"orbit-caption\">",$caption,"</div></li>";    
    }
}
?>
于 2013-08-06T09:35:50.413 回答