这一节我们将继续完善后台的第一个页面,我的计划是让该页面显示一个留言列表,好让管理员查看。

思想很明确,读取数据库中的记录,然后显示出来。基本上和前台的显示所有留言是一样的。只是这次我们将代码放到了后台。

让模型来读取数据。加入模型类实现文件。

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)

  • 最新在前
  • 最佳在前