传递变量来查看PHP

时间:2014-01-23 09:44:16

标签: php image variables view

我有以下代码(见下文),它是基于URL加载特定文件夹,通过在行echo $page[] = $fileinfo->getPathname();中添加echo我得到预期的结果(相关文件夹中的所有文件) 我现在只需要将带有路径名的变量传递给我的视图,以便加载相关的图像:

控制器代码

public function action_flipbook($page = '') {

FB::log($this->request->param('id1'));
    $this->template->content = View :: factory('flipbook/default');
    // give me a list of all files in folder assets/flipbook_images/.$this->request->param('id1')
    $dir = new DirectoryIterator('assets' . DIRECTORY_SEPARATOR .'images'. DIRECTORY_SEPARATOR .'flipbook'. DIRECTORY_SEPARATOR . $this->request->param('id1'). DIRECTORY_SEPARATOR);
    $this->template->content->pages = array($page);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot()) {
        //  $page[] = $fileinfo->getFilename();
        echo $page[] = $fileinfo->getPathname();
        }
    }
  } 

查看代码

<?php
        foreach ($pages as $page) {
            echo '<div><img src="'.$page.'" /></div>';
        }
        ?>

通过添加 var_dump($ page) echo '<div><img src="'.var_dump($page).'" /></div>';我得到的数组打印如下:array(120) { [0]=> string(37) "assets\images\flipbook\au\1-large.jpg" [1]=> string(31) "assets\images\flipbook\au\1.jpg" [2]=> string(38) "assets\images\flipbook\au\10-large.jpg" [3]=> string(32) "assets\images\flipbook\au\10.jpg"显示正确的路径?

2 个答案:

答案 0 :(得分:1)

我们不了解您的框架以及如何完成分配,但您似乎正在这样做

$this->template->content->someVar = 'something';

在你的情况下,你在此方法中将$ page作为空参数,所以我假设在调用之前:

$this->template->content->pages = array($page);

$ page是空字符串,因此您正在构建一个传递给视图的空字符串数组,该字符串不会生成任何页面。

稍后你会生成$page数组,也许这就是你要传递给视图的输出。

然后,在构建实际数组

之后,必须移动分配
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        $page[] = $fileinfo->getFilename();
    }
}
$this->template->content->pages = $page;

$ page已经是一个数组($page[] = ...),所以你不需要把它放在另一个数组中。

答案 1 :(得分:0)

我认为控制器代码和视图代码位于不同的文件中。

如果是这种情况,则$ page将类似于视图文件中的全局变量

有一件事我注意到你在$ page []数组中分配路径名并迭代$ pages数组(最后有s)

在视图文件中声明$ pages数组作为全局变量并遍历它。虽然这不是将变量从控制器传递到视图的正确方法,但是您可以使用此技术检查一切是否正常工作,并且稍后传递变量,假设要在模型 - 视图 - 控制器模式中传递

<?php
    global $page ;
    foreach ($page as $page_single) {
        echo '<div><img src="'.$page_single.'" /></div>';
    }
?>