在本节中,我们将介绍组件的工具栏,并完成部分的控制功能,通过这一节的了解,希望能对后台的控制流程有一个大致的了解。
先看一下我们的组件和系统的组件的一些不同:
我们的组件:
系统的文章组件:
发现我们的组件和系统组件相距还是有点远的。从头做起,今天先给我们的组件加上一个名字和工具栏。
修改视图文件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); // add toolbar $this->addToolBar(); //display the template parent::display($tpl); } /** * 设置工具栏 * * @access protected */ protected function addToolBar() { JToolBarHelper::title('ZMAX留言板'); //JToolBarHelper::addNew该函数接受两个参数,一个是重载的任务 一个是文本, //大体上下面的几个函数也都是这样使用。具体情况查看相应的API JToolBarHelper::addNew(); JToolBarHelper::editList(); JToolBarHelper::publish(); JToolBarHelper::unpublish(); JToolBarHelper::deleteList(''); } }
我们在视图类中增加了一个addToolbar的函数,这个函数的主要功能是使用JToolBarHelper类提供的函数来创建工具栏。重点解释一下deleteList()方法。
这个函数的原型声明是:
deletelist($msg="", $task="remove" ,$alt="Delete");
第一个参数是一个字符串,主要是给脚本用的,当用户点击的时候,在一个提示框中显示给用户。比喻说“你确认删除?”
第二个参数是这个按钮对应的任务,也就是要在控制器中执行的函数。默认为remove.注意这里是remove而不是delete.这和上面几个都不一样。
第三个参数是显示的文字。
写完了这些,下面看一下效果:
呵呵,感觉还不错。挺精致的。只有了少少的几行代码就做出了这个效果,说明joomla的二次开发接口做的还是挺好的。
继续我们的修改。
下面的要做的就是将我们的发布选项用系统的发布状态图标来表示。
修改视图的模板default.php
<form action="index.php" method="post" name="adminForm">
<div id="editcell">
<table class="adminlist">
<thead>
<tr>
<th width="20px">
<input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($this->messages);?>)" />
</th>
<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):
$checked = JHTML::_('grid.id',$n,$message->message_id);
?>
<tr class="<?php echo "row".$n%2; ?>">
<td>
<?php echo $checked;?>
</td>
<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 $published = JHTML::_('grid.published',$message->message_publish,$n);?>
<?php echo $published;?>
</td>
<td>
<?php echo $message->message_time;?>
</td>
</tr>
<?php $n++;?>
<?php endforeach;?>
</table>
</div>
<input type="hidden" name="option" value="com_guestbook"/>
<input type="hidden" name="task" value=""/>
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="controller" value="guestbook"/>
</form>
解释一些绿色部分的代码:
<input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($this->messages);?>)" />
这代码的作用是实现对选择框的全选功能。按照正确的命名,joomla系统来维护这个公告。
$checked = JHTML::_('grid.id',$n,$message->message_id);
<?php $published = JHTML::_('grid.published',$message->message_publish,$n);?>
<?php echo $published;?>
上面的代码调用JHTML类的_()方法来产生预定义好的XHTML元素。第一个产生选择框,第二参数发布按钮。发布按钮的第二个参数控制显示发布还是显示不发布。0代表不发布,1代表发布。
在表单的最后有4个隐藏的字段,在joomla我们经常用这种方法来传递参数。
看一下效果:
在下一节中我们将完成工具栏的处理逻辑。敬请期待。
评论 (0)