从控制器传递2个数组到视图

时间:2013-09-24 04:58:40

标签: php arrays codeigniter

我正在尝试使用这种方法将两个数组从控制器传递到视图:

我的基础数据查询已提取此数据,如下所示: $ catalogData:Title(服装);季节(冬季); $ ProductData:Type(Shirts);尺寸(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

我似乎无法找到将两个数组传递给视图的任何示例,这让我认为这是不可能的?

编辑:我正在使用CodeIgniter

4 个答案:

答案 0 :(得分:2)

在不了解有关MVC框架的任何内容的情况下,我只能假设它在视图名称后面需要一个数组参数并使用extract,在这种情况下我会执行以下操作

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

并在您看来......

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

此外,您的错误消息似乎表明您应该使用$Title而不是$CatalogTitle是数据示例中显示的属性名称。

答案 1 :(得分: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'];
}

这是程序。如果您遇到任何问题,请告诉我。

答案 2 :(得分:0)

我能想到几件不同的事情,

首先:您正在尝试回显$ Catalog,但我没有看到您将具有该名称的变量传递给您的视图。这导致了第二部分。

第二:你需要回显你想要打印的对象,而不是数组。所以他们应该是这样的:

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

最后,老实说,如果没有框架,我就永远不会进行php编程,你不要提及是否使用了一个,但通常是在你将一组变量传递到视图中的那些。如下所示:

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

答案 3 :(得分:0)

您可以传递两个这样的数组

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

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