这一节我们将继续完善后台的第一个页面,我的计划是让该页面显示一个留言列表,好让管理员查看。
思想很明确,读取数据库中的记录,然后显示出来。基本上和前台的显示所有留言是一样的。只是这次我们将代码放到了后台。
让模型来读取数据。加入模型类实现文件。
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)