教程栏目

joomla中文网出品的官方教程

在本节中,我们将介绍组件的工具栏,并完成部分的控制功能,通过这一节的了解,希望能对后台的控制流程有一个大致的了解。

 

先看一下我们的组件和系统的组件的一些不同:

我们的组件:

系统的文章组件:

发现我们的组件和系统组件相距还是有点远的。从头做起,今天先给我们的组件加上一个名字和工具栏。

修改视图文件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)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器

第17章 joomla升级