partialLoop viewhelper 如何在带有 tablegateway 的 zend3 中使用
how can partialLoop viewhelper be used in zend3 with tablegateway
我仍然很难适应 Zend3 框架。在我使用 Zend 1 之前,由于 tablegatewayadapter,它可能仍然是一个理解问题。我只想一起显示 2 个实体,它们是项目 1-n units.So 我必须以某种方式将项目密钥传递给我的 unitarray 以仅获取相关单位。在 Zend1 中,我(在另一个示例中)使用显示 n 实体的部分循环助手实现了这一点,这里是关系 "veranstaltung - docs",相同的想法,其他表。
这是一个片段,展示了我以前在 zend1 中所做的事情:
$veran=new Application_Model_DbTable_Ribaveranstaltungen();
$documents = new Application_Model_DbTable_Ribadocs();
$select=$veran->select()
->from('riba_veranstaltung')
->order('sort DESC');
$veranstaltung=$veran->fetchAll($select);
foreach($veranstaltung as $v) :
$dokument=$documents->getDocumentveranstaltung1($v->id);?>
<tr>
<td> <a href="<?php echo $this->url(array('controller'=>'Ribaveranstaltungen',
'action'=>'index'));?>"><img src="./images/icons/haus.jpg" width="20" height="20" /></a></td>
<td class="row_0"><?php echo $v->veranstaltung;?></td>
<td class="row_1"><?php echo $this->partialLoop('/helpers/_docs-row.phtml', $dokument);?></td>
</tr>
<?php
$j=$j+1;
endforeach;?>
如何将其迁移到 zend3。我有几个想法,例如
1.idea:我用我的控制器试过:
public function indexAction()
{
//'imports' => $this->table->fetchAll(),
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'units' => $this->unitTable->fetchAll(),
]);
}
我的麻烦来了,怎么用我的方法fetchALLP(project)
,因为我想把实际的projectkey传给单位,只得到相关的记录
2.idea:我尝试做同样的事情,就像我在 Zend1 中所做的那样。我想在我的视图中初始化我的对象。
$gateway = new Unit();
$units = new UnitTable($gateway);
foreach ($projects as $project) :
$unit=$units->fetchAllP($project->ProjectID);?>
这个,我预料到的,不行,因为我真的不明白这个tableadapter的概念。有人可以靠近我的例子向我解释一下吗?
下一个有趣的话题是,是否还有一个 partialloop 助手,或者在这种情况下我是否也必须使用一个新概念?
编辑:显示最新版本
我按照建议更改了 Controller/index 操作,现在看起来:
$result = $this->unitTable->fetchAll();
$units = $result->toArray();
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'units' => $units,
]);
我的索引 phtml(片段):
foreach ($projects as $project) :
?>
<tr>
<td><?= $this->escapeHtml($project->Projectname) ?></td>
<td><?= $this->escapeHtml($project->PShortcut) ?></td>
<td><?= $this->escapeHtml($project->PCI_Number) ?></td>
<td><?= $this->escapeHtml($project->PDescription) ?></td>
<td><?= $this->escapeHtml($project->PComponent_Class) ?></td>
<?php $this->partialLoop('import/unit/index.phtml', $units);
endforeach; ?>
我的部分(当然有片段和结尾)
<?php
foreach ($units as $unit) :
var_dump(get_object_vars($units));
?>
<tr>
<td><?= $this->escapeHtml($this->Unitname) ?></td>
编辑:新体验
我现在是这样实现的,其他的建议完全没有显示部分:
$this->partialLoop()->setObjectKey('ProjectID');
echo $this->partialLoop('import/unit/unitpartial.phtml', $units);
我得到这个结果:
它显示第一个项目,然后显示所有单元。它用项目数重复单位,但不显示任何其他项目。
无论如何我都更进一步了。我需要更多信息来了解如何 link 实际项目的一部分,例如我需要在视图中:
项目1
单位 x
单位y
项目2
单位abc
...
在 partialLoop
视图助手中,您可以将数据或变量作为关联数组或实现 toArray() 方法的对象或具有 get_object_vars()
实现的对象传递,以获取其 public属性。
public function testAction()
{
$result = $this->unitTable->fetchAll();
$units = $result->toArray();
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'units' => $units,
]);
}
首先,我们将看到一个示例传递数据数组。
在这种情况下,我们将使用 $units
变量,因为它是我们将其转换为数组时的数据数组。
echo $this->partialLoop('/path/to/partial.phtml', $units);
现在您可以将 table 列名称输出为部分模板中的变量,例如,在 /path/to/partial.phtml
.
中
echo $column_name;
// or
echo $this->column_name;
现在,我们将看到一个示例将对象作为数据.
传递
猜测$projects
变量没有转换成数组,是一个对象。您可能希望将其作为对象传递给部分脚本。您可以通过设置 objectKey
属性 来完成此操作,如下所示
$this->partialLoop()->setObjectKey('project');
echo $this->partialLoop('/path/to/partial.phtml', $projects);
现在在您的部分 /path/to/partial.phtml
模板中,输出如下对象属性
echo $this->project->property_name;
我仍然很难适应 Zend3 框架。在我使用 Zend 1 之前,由于 tablegatewayadapter,它可能仍然是一个理解问题。我只想一起显示 2 个实体,它们是项目 1-n units.So 我必须以某种方式将项目密钥传递给我的 unitarray 以仅获取相关单位。在 Zend1 中,我(在另一个示例中)使用显示 n 实体的部分循环助手实现了这一点,这里是关系 "veranstaltung - docs",相同的想法,其他表。
这是一个片段,展示了我以前在 zend1 中所做的事情:
$veran=new Application_Model_DbTable_Ribaveranstaltungen();
$documents = new Application_Model_DbTable_Ribadocs();
$select=$veran->select()
->from('riba_veranstaltung')
->order('sort DESC');
$veranstaltung=$veran->fetchAll($select);
foreach($veranstaltung as $v) :
$dokument=$documents->getDocumentveranstaltung1($v->id);?>
<tr>
<td> <a href="<?php echo $this->url(array('controller'=>'Ribaveranstaltungen',
'action'=>'index'));?>"><img src="./images/icons/haus.jpg" width="20" height="20" /></a></td>
<td class="row_0"><?php echo $v->veranstaltung;?></td>
<td class="row_1"><?php echo $this->partialLoop('/helpers/_docs-row.phtml', $dokument);?></td>
</tr>
<?php
$j=$j+1;
endforeach;?>
如何将其迁移到 zend3。我有几个想法,例如 1.idea:我用我的控制器试过:
public function indexAction()
{
//'imports' => $this->table->fetchAll(),
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'units' => $this->unitTable->fetchAll(),
]);
}
我的麻烦来了,怎么用我的方法fetchALLP(project)
,因为我想把实际的projectkey传给单位,只得到相关的记录
2.idea:我尝试做同样的事情,就像我在 Zend1 中所做的那样。我想在我的视图中初始化我的对象。
$gateway = new Unit();
$units = new UnitTable($gateway);
foreach ($projects as $project) :
$unit=$units->fetchAllP($project->ProjectID);?>
这个,我预料到的,不行,因为我真的不明白这个tableadapter的概念。有人可以靠近我的例子向我解释一下吗?
下一个有趣的话题是,是否还有一个 partialloop 助手,或者在这种情况下我是否也必须使用一个新概念?
编辑:显示最新版本
我按照建议更改了 Controller/index 操作,现在看起来:
$result = $this->unitTable->fetchAll();
$units = $result->toArray();
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'units' => $units,
]);
我的索引 phtml(片段):
foreach ($projects as $project) :
?>
<tr>
<td><?= $this->escapeHtml($project->Projectname) ?></td>
<td><?= $this->escapeHtml($project->PShortcut) ?></td>
<td><?= $this->escapeHtml($project->PCI_Number) ?></td>
<td><?= $this->escapeHtml($project->PDescription) ?></td>
<td><?= $this->escapeHtml($project->PComponent_Class) ?></td>
<?php $this->partialLoop('import/unit/index.phtml', $units);
endforeach; ?>
我的部分(当然有片段和结尾)
<?php
foreach ($units as $unit) :
var_dump(get_object_vars($units));
?>
<tr>
<td><?= $this->escapeHtml($this->Unitname) ?></td>
编辑:新体验
我现在是这样实现的,其他的建议完全没有显示部分:
$this->partialLoop()->setObjectKey('ProjectID');
echo $this->partialLoop('import/unit/unitpartial.phtml', $units);
我得到这个结果:
它显示第一个项目,然后显示所有单元。它用项目数重复单位,但不显示任何其他项目。
无论如何我都更进一步了。我需要更多信息来了解如何 link 实际项目的一部分,例如我需要在视图中:
项目1 单位 x 单位y 项目2 单位abc ...
在 partialLoop
视图助手中,您可以将数据或变量作为关联数组或实现 toArray() 方法的对象或具有 get_object_vars()
实现的对象传递,以获取其 public属性。
public function testAction()
{
$result = $this->unitTable->fetchAll();
$units = $result->toArray();
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'units' => $units,
]);
}
首先,我们将看到一个示例传递数据数组。
在这种情况下,我们将使用 $units
变量,因为它是我们将其转换为数组时的数据数组。
echo $this->partialLoop('/path/to/partial.phtml', $units);
现在您可以将 table 列名称输出为部分模板中的变量,例如,在 /path/to/partial.phtml
.
echo $column_name;
// or
echo $this->column_name;
现在,我们将看到一个示例将对象作为数据.
传递猜测$projects
变量没有转换成数组,是一个对象。您可能希望将其作为对象传递给部分脚本。您可以通过设置 objectKey
属性 来完成此操作,如下所示
$this->partialLoop()->setObjectKey('project');
echo $this->partialLoop('/path/to/partial.phtml', $projects);
现在在您的部分 /path/to/partial.phtml
模板中,输出如下对象属性
echo $this->project->property_name;