这一节我们将继续完善后台的第一个页面,我的计划是让该页面显示一个留言列表,好让管理员查看。
思想很明确,读取数据库中的记录,然后显示出来。基本上和前台的显示所有留言是一样的。只是这次我们将代码放到了后台。
让模型来读取数据。加入模型类实现文件。
models\messagelist.php文件的代码:
//后台的messagelist的模型类 defined('_JEXEC') or die('Restricted Access'); jimport('joomla.application.component.model'); class GuestbookModelMessageList extends JModel { /** * 从数据库中获取数据 * * @access public * @return messages * */ function getMessages() { $db = & JFactory::getDBO(); $query = $db->getQuery(true); $query->select("*")->from( $db->nameQuote('#__guestbook')); $db->setQuery((string)$query); $messages = $db->loadObjectList(); return $messages; } }
代码逻辑十分清晰,无需过多讲解。
模型类实现了,下一步修改已有的视图类,从模型类中获取数据
views\messagelist\view.html.php代码如下:
defined('_JEXEC') or die('Restricted access'); jimport('joomla.application.component.view'); class GuestBookViewMessageList extends JView { // messagelist view display method function display($tpl = null) { $messages = & $this->get('Messages'); $this->assignRef('messages',$messages); //display the template parent::display($tpl); } }
视图类已经得到数据,下一步就是在视图的模版中显示数据了:
tmpl\default.php文件的代码如下:
<?php
//后台留言板显示留言界面
defined('_JEXEC') or die('你不能直接访问这个文件!');
?>
<form action="index.php" method="post" name="adminForm">
<div id="editcell">
<table class="adminlist">
<thead>
<tr>
<th> 序号 </th>
<th> 主题 </th>
<th> 正文 </th>
<th> 作者 </th>
<th> Email </th>
<th> 发布</th>
<th> 时间 </th>
</tr>
</thead>
<?php
$n = 0;
foreach ($this->messages as &$message):
$n++;
?>
<tr class="<?php echo "row".$n%2; ?>">
<td>
<?php echo $message->message_id;?>
</td>
<td>
<?php echo $message->message_subject;?>
</td>
<td>
<?php echo $message->message_content;?>
</td>
<td>
<?php echo $message->message_author;?>
</td>
<td>
<?php echo $message->message_author_email;?>
</td>
<td>
<?php echo $message->message_publish;?>
</td>
<td>
<?php echo $message->message_time;?>
</td>
</tr>
<?php endforeach;?>
</table>
</div>
</form>
万事俱备了,现在刷新一下,后台显示如下:
基本上和正常的组件差不多了。
解释一下代码:
我们定义了一个表单,adminForm.在后台这个名字一般都是固定的。然后在html元素中加入了几个css类,editcell,adminlist row0 row1等等。这些类都是系统已经定义好的。joomla为了确保每一个组件的操作界面基本类似,所以提供一些类,建议在书写组件的时候尽量使用这些预定义好的类,这样能让组件更容易被用户操作。
本节就到处结束。在下一节,我们将给组件增加一些按钮。敬请期待……
评论 (0)