Awa*_*wan 3 php database zend-framework
我正在使用zend.有时我必须在HTML表格的网页上显示数据库中的数据.现在我正在做这样的事情:
在IndexController的IndexAction中:
$myModel = new Model_MyTable_Object();
$data = $myModel->getAllRecords();
$this->view->show = $data->toArray();
Run Code Online (Sandbox Code Playgroud)
并在index.phtml
<table>
<tr>
<th>id</th>
<th>FirstName</th>
<th>LastName</th>
<th>Locaion</th>
</tr>
<?php
foreach( $this->show as $data ) {
echo "<tr>
<td>" . $data['id'] . "</td>
<td>" . $data['firstname'] . "</td>
<td>" . $data['lastname'] . "</td>
<td>" . $data['location'] . "</td>
</tr>";
}
?>
</table>
Run Code Online (Sandbox Code Playgroud)
有什么好方法可以在Zend中做到这一点.我已经看到了某个地方,其中为每个数据网格创建了一个PHP类,我们需要它在哪里然后我们在Action中创建该类的实例并在phtml中呈现该对象以显示html表格式的数据,如下所示:
$this->data->render();
Run Code Online (Sandbox Code Playgroud)
我们应该怎么做 ?任何好的例子,教程或链接.
我认为一个好方法是使用partialLoop视图助手.例如,您可以在APPLICATION_PATH/views/scripts/_partials /中创建名为myTableRow.phtml的部分视图文件,如下所示:
<!--APPLICATION_PATH . '/views/scripts/_partials/myTableRow.phtml -->
<tr>
<td> <?php echo $this->id; ?> </td>
<td> <?php echo $this->escape($this->firstname); ?> </td>
<td> <?php echo $this->escape($this->lastname); ?> </td>
<td> <?php echo $this->escape($this->location); ?> </td>
</tr>
Run Code Online (Sandbox Code Playgroud)
然后你的index.phtml如下:
<table>
<tr>
<th>id </th>
<th>FirstName </th>
<th>LastName </th>
<th>Locaion </th>
</tr>
<!-- I assume that $myModel->getAllRecords(); returns an instance of Zend_Db_Table_Rowset_Abstract -->
<?php echo $this->partialLoop('_partials/myTableRow.phtml', $this->show); ?>
</table>
Run Code Online (Sandbox Code Playgroud)
如果你需要在许多视图中执行它,那么你可以创建自己的视图助手来获取数据,构造一个表并将其作为字符串返回给视图.
就目前$this->data->render();而言,恕我直言,这不是一个很好的方式.原因是您需要将数据表示嵌入到模型中.但是,通过使用ZF,您最有可能想要使用其MVC系统.MVC的主要是分离模型,控制器和视图.通过这样做,$this->data->render()你实际上将混合模型与视图.
创建一个View Helper
<?php
class Zend_View_Helper_DisplayGenericTableHelper extends Zend_View_Helper_Abstract {
public $view;
public function setView(Zend_View_Interface $view)
{
$this->view = $view;
}
public function displayGenericTableHelper(Zend_Db_Table_Rowset_Abstract $rowset,$border=0) {
$table = "";
if(count($rowset)>0) {
$table .= '<table border="'.$border.'"><tr>';
foreach(array_keys($rowset->current()->toArray()) as $column) {
$table .= '<th>'.$column.'</th>';
}
foreach($rowset as $row) {
$table .= '</tr><tr>';
foreach($row->toArray() as $content) {
$table .= '<td>'.$content.'</td>';
}
}
$table .='</tr></table>';
}
return $table;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
在你看来
<?php
echo $this->displayGenericTableHelper($this->points,0);
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7634 次 |
| 最近记录: |