我有一个我经常遇到的模式,我特别想找一种ZF2 (ZF3)方法来解决这个N + 1-related问题。
以下是单个PHP文件的摘录:
遍历DB记录&用数据构建表行
一些数字(例如N)表行被打印出来:
<?php
for ($i = 0; $i < db_num_rows($result); $i ++)
{
$row = db_fetch_array($result);
?>
<tr onclick="js_action(<?=$row['id']?>)">
<td><?=$row['number']></td>
<td><?=$row['company']?></td>
</tr>
<? } ?>一个只需要打印一次的嵌入式JS脚本
<script type="text/javascript">
function js_action(id)
{
// some JS code
}
</script>问题
我想将视图生成从DB中分离出来,我主要关注的是。。。我是使用partialLoop视图助手还是完全跳过它?
我可以使用partialLoop,它让我创建这样的文件:
//controller
$this->partialLoop('filename', $arrayRows);
<!-- view -->
<td>$this->number</td>
<td>$this->company</td>我看不出只为这个小循环创建这么小的文件有什么意义。在我的情况下,实现View脚本的好方法是什么?
发布于 2016-03-24 18:39:50
文档中已经提到了partialLoop的主要用例(重点是添加的):
主要用途是可重用模板片段。
将标记拆分为另一个模板的唯一原因是可重用性。如果您不需要重用标记,就没有理由去做额外的工作并定义一个额外的模板。这使得读取和维护模板变得更加困难。
相反,在视图中使用foreach循环是非常好的:
<script type="text/javascript">
function js_action(id)
{
// some JS code
}
</script>
<table>
<?php foreach ($this->arrowRows as $row) { ?>
<tr>
<td><?php echo $row['number']; ?></td>
<td><?php echo $row['company']; ?></td>
</tr>
<?php } ?>
</table>即使您有几次这样的片段,保持它的位置可能是有意义的,而不是创建这样一个小的视图脚本。对我来说,这似乎是过度优化。
我通常遵循以下原则:
https://stackoverflow.com/questions/36159638
复制相似问题