Откуда изначально появился массив? Я предполагаю, что это произошло из базы данных или из какого-то другого "предсказуемого" источника данных? В этом случае вы можете просто передать ссылку на эти данные (например, первичный ключ из базы данных) через URL при ссылке на вторую страницу. Если у вас недостаточно информации для этого, вам, возможно, придется пересмотреть свой дизайн. Наличие одного представления для доступа к содержимому другого отдельного представления было бы плохой идеей. Конечно, вы можете создавать фрагменты представления (просто файл PHP, который вы «включаете» в другие шаблоны), чтобы минимизировать дублирование кода.
Я не знаком с тем, как работает CodeIgniter, но на самом деле это просто общая логика веб-разработки.
EDIT
Что должно произойти, так это то, что ваша форма отправляется вашему контроллеру. Затем ваш контроллер проверяет данные POST и решает, какой выбор пользователь сделал из списка. Затем он перенаправляет на второй контроллер, передавая параметр в URL, чтобы второй контроллер мог найти элемент из базы данных.
Примитивный пример, не использующий ваш конкретный вариант использования, просто какой-то семантический псевдокод. Я надеюсь, что вы можете следовать здесь. Примером является вымышленный многоязычный книжный магазин, в котором пользователь выбирает язык перед просмотром списка книг на этом языке. Код фреймворка чисто вымышленный. Я пропустил все, включая проверку работоспособности, просто для краткости, чтобы вы могли видеть только те части, которые делают этот рабочий процесс:
Контроллер выбора языка
class LanguagesController ... {
public function selectLanguage() {
// If the user submitted the form, collect the language_id
// and redirect to the BooksController
if ($this->_request->get('language_id')) {
return $this->_response->redirect(array(
'controller' => 'BooksController',
'action' => 'viewBooks',
'language_id' => $this->_request->get('language_id')
));
}
$languages = Language::findAllWithBooksInStock();
$this->_view->set('languages', $languages);
}
}
Форма выбора языка
<form method="post">
<fieldset>
<label for="language">Select a language</label>
<select name="language_id" id="language">
<?php foreach ($languages as $lang): ?>
<option value="<?php escape($lang->id); ?>"><?php escape($lang->name); ?></option>
<?php endforeach; ?>
</select>
</fieldset>
<fieldset>
<input type="submit" name="submit" value="Continue" />
</fieldset>
</form>
BooksController, который получает значение language_id
class BooksController ... {
public function viewBooks() {
$language = Language::findById($this->_request->get('language_id'));
$books = Book::findAllWithLanguage($language);
$this->_view->set('language', $language)
->set('books', $books);
}
}
Теперь BooksController может реализовать представление, отображающее все книги на языке, выбранном на предыдущем контроллере. Все, что было сделано для достижения этой цели, - передать первичный ключ для языка в URL-адресе между двумя контроллерами.
PS: не используйте сессии для чего-то подобного. Это плохая привычка. Будьте в восторге.