2013-09-24 4 views
-2

Я пытаюсь передать два массива от контроллера для просмотра, используя этот подход:Передача 2 массивов от контроллера для просмотра

Моего основного запроса данных добыл эти данные следующим образом: $ CatalogData: Название (одежды) ; Сезон (Зима); $ ProductData: Тип (Рубашки); Размер (XL); Цена (10 долларов США);

Контроллер

$this->load->view('users/TheView', $catalogData, $productData); 

Посмотреть

<?php 
echo $Catalog; 
echo $Season; 
echo $Type; 
echo $Size; 
echo $Price; 
?> 

Мое сообщение об ошибке

A PHP Error was encountered 
Severity: Notice 
Message: Undefined index: Catalog 
Filename: users/controller.php 

Я не могу показаться, чтобы найти примеры прохождения двух массивов на вид, что заставляет меня думать это невозможно?

Edit: Я использую CodeIgniter

+0

Я предлагаю вам прочитать [документацию] (http://ellislab.com/codeigniter/user-guide/libraries/loader.html) в следующий раз (см. '$ this-> load-> view ('file_name', $ data, true/false)') – Phil

+1

Этот вопрос не соответствует теме, потому что OP не потрудился проконсультироваться с [документацией ] (http://ellislab.com/codeigniter/user-guide/libraries/loader.html) – Phil

+0

Спасибо за указатель, я не вижу ничего конкретного, что я упоминаю, но я дам ему еще один шаг. – Maxcot

ответ

2

Не зная ничего о рамках MVC в вопросе, я могу только предположить, что он ожидает один аргумент массива после названия вида и использует extract, в этом случае я бы сделал следующий

$this->load->view('users/TheView', array(
    'catalog' => $catalogData, 
    'product' => $productData)); 

и в вашей точки зрения ...

<?php 
echo $catalog['Title'], $catalog['Season'], $product['Type'], etc 

Кроме того, ваше сообщение об ошибке, кажется, указывает, что вы должны использовать $Title вместо $Catalog. Title - это имя свойства, указанное в вашем примере данных.

+0

Спасибо, но я, очевидно, пропустил что-то еще. Не меняет мою ошибку «неопределенной переменной» – Maxcot

+0

@Maxcot заботится о расширении этой ошибки, чтобы включить ее в остальную часть? – Phil

+0

Несомненно, я сделал это – Maxcot

0

Несколько другая вещь, которую я могу думать,

Во-первых: вы пытаетесь повторить $ Каталог, но я не вижу где-нибудь, что вы передаете переменную с таким именем на ваш взгляд. Это приводит ко второй части.

Во-вторых: вам нужно отобразить объект, который вы пытаетесь распечатать, а не массив. поэтому они должны быть чем-то вроде:

<?php echo $catalogData['Title']; ?> 

Наконец, я честно не делаю PHP программирования без рамки, и вы не; говоря, если вы используете один, но, как правило, в тех, кого вы передать массив переменных в ваш Посмотреть. Так что-то вроде:

$this->load->view('users/TheView', array('catalogData'=>$catalogData, 'productData'=>$productData); 
+0

Извините, забыл упомянуть, что это CodeIgniter. И да, опечатки вокруг названия легко фиксируются. Пробовал ваше предложение (с некоторыми исправлениями к отсутствующим скобкам и т. Д.), Но просто меняет сообщение об ошибке на «Попытка получить свойство не-объекта» – Maxcot

+0

Я не уверен, может ли codeIgnitor использовать синтаксис Array->. отредактировал мой ответ на более распространенную форму скобки. – user2566987

2

Первое, если вы хотите передать более чем один массив для просмотра, то вы должны сделать что-то вроде этого в контроллере

$data=array(); 
$data['catalogData']=$this->model_name->function_name(); // query for catalog 
$data['ProductData']=$this->model_name->function_name(); // query for product 
$this->load->view('view_name',$data); 

ввиду

if(isset($catalogData) && is_array($catalogData) && count($catalogData)>0) 
{ 
    echo $catalogData['Title']; 
} 

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

+0

Спасибо, все хорошо. – Maxcot

0

Вы можете передать два массива, как этот

$data['catalogData'] = $catalogData; 
$data['productData'] = $productData; 

$this->load->view('users/TheView', $data); 
Смежные вопросы