2014-01-23 4 views
0

У меня есть следующий код (см. Ниже), который загружает определенные папки на основе URL-адреса, добавляя эхо в строку echo $page[] = $fileinfo->getPathname();. Я получаю ожидаемый результат (все файлы из соответствующей папки) Теперь я просто нужно передать эту переменную с именем пути на мой взгляд, так оно загружает соответствующие изображения:Передать переменную для просмотра PHP

Controller Код

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(); 
     } 
    } 
    } 

View Code

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

Добавляя var_dump ($ страницы)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" который отображаются правильные пути?

+1

You 'сохраняя переменную как 'page []', но затем используя '$ pages как $ page', когда она должна быть' $ page as $ pages' или что-то подобное (сначала вызывается '$ page'). – Albzi

+0

Я пробовал это, а затем получаю 'неопределенную переменную: $ page' –

+0

Назначьте var в конце метода. @BeatAlex это var assignation '$ this-> template-> content-> pages', поэтому на самом деле это' pages' –

ответ

1

Мы не знают о вашей структуре, и как это делаются уступка, но вы, кажется, делаете это, как

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

В вашем случае, у вас есть $ страницы как пустые пары в этом методе, поэтому я полагаю, до вызова:

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

$ страницы не является пустой строкой, так что вы строите массив одной пустой строки, переданной в представление, которое не будет генерировать какую-либо страницы.

Позже вы создадите массив $page, и, возможно, это результат, который вы хотите передать в представление.

Затем вы должны переместить ассигнование, после того, как вы строите фактический массив

foreach ($dir as $fileinfo) { 
    if (!$fileinfo->isDot()) { 
     $page[] = $fileinfo->getFilename(); 
    } 
} 
$this->template->content->pages = $page; 

$ страница уже массив ($page[] = ...), поэтому вам не нужно положить его в еще один массив.

+0

да, я хочу передать $ страницу в представление, когда я перемещаю $ this-> template-> content-> pages = $ page; Я получаю сообщение об ошибке «Array to string conversion» on echo '

'; –

+0

var_dump переменная $ page в представлении, возможно, это вложенный массив? –

+0

Если я добавлю в var_dump в представлении вместо $ page, я получаю массив, напечатанный со всеми моими файлами, что правильно? Например: array (120) {[0] => string (37) "assets \ images \ flipbook \ au \ 1-large.jpg" [1] => string (31) "assets \ images \ flipbook \ au \ 1.jpg "[2] => строка (38)" assets \ images \ flipbook \ au \ 10-large.jpg "[3] => строка (32)" assets \ images \ flipbook \ au \ 10.jpg " ........ –

0

Я считаю, что код контроллера и код просмотра находятся в разных файлах.

Если это так, то $ страница будет походить на глобальную переменную в файл представления

Одна вещь, которую я заметил, что вы назначаете имена путей в $ странице [] массива и перебирать $ страниц массива (есть s в конец)

В файле вида объявляет массив $ pages как глобальную переменную и перебирает ее. Несмотря на то, что это не правильный способ передать переменную из контроллера для просмотра, но вы можете проверить, что все работает нормально с этой техникой и чем позже передать переменные, как предполагают, чтобы быть переданы в шаблон Model-View-Controller

<?php 
    global $page ; 
    foreach ($page as $page_single) { 
     echo '<div><img src="'.$page_single.'" /></div>'; 
    } 
?> 
Смежные вопросы