设置要在视图中使用的数组对象

时间:2012-03-06 04:35:29

标签: php cakephp cakephp-1.3 php-5.3

在cakephp中,我从mysql中检索数据并将它们分配给一个数组,但是我无法在视图中重用它的每个元素。

在控制器中,我调用模型来查询数据库中的数据,该数据具有以下格式

Array ([0]=>Array([user]=>Array([something]=>somevalue [somethingelse]=>someotherValue))
   [1]=>Array([user]=>Array([something]=>somevalue [somethingelse]=>someotherValue))
    .......)

我按照以下方式初始化我准备传递给视图的数组,$ result是从数据库中获取的数组。

$i=0;
foreach($result as $row)
{
   $exportDt[$i]['something']=$row['user'][something];
   $exportDt[$i]['somethingelse']=$row['user'][somethingelse];
}

this->set($exportDt);

如何在视图中重用此exportDt数组?我想只允许一个暗淡的数组设置。

2 个答案:

答案 0 :(得分:1)

看起来您只需要使用正确的语法来设置变量(即将变量从控制器传递到视图):

//controller
$this->set('exportDt', $exportDt);

//view
print_r($exportDt);

$this->set()的第一个参数是您希望从视图中访问的变量的名称。第二个是要放入该变量的数据。

因此,例如,您甚至可以使用其他名称:

//controller
$this->set('myVar', $exportDt);

//view
print_r($myVar);

另一种常见做法是使用PHP的compact。它通过字符串的名称查找变量,并创建一个名为=> value

的数组
  

... compact()查找具有该名称的变量   当前的符号表并将其添加到输出数组中   变量名成为键,变量的内容变为   该键的值。简而言之,它与extract()完全相反。

示例:

//controller
$this->set(compact('exportDt');

//view
$print_r($exportDt);

更常见的是,它与多个变量一起使用:

//controller
$var1 = 'whatever';
$myVar = 'something else';
$anotherVar = true;
$this->set(compact('var1', 'myVar', 'anotherVar'));

//view
echo $var1. ' ' . $anotherVar . ' ' . $myVar;

答案 1 :(得分:1)

控制器部分

$this->set('exportDt', $exportDt);

查看部分

您可以直接访问$ exportDt作为.ctp文件中的数组

由于