如何创建一个MVC模式的Joomla组件教程(十四) - 创建管理员界面 增加管理功能

直到目前为止,管理界面没有什么实际用户,除了显示数据。我们需要增加一些按钮和链接,从而能执行管理功能。

The Toolbar

toolbar是Joomla组件管理控制面板的顶部。这个组件同样也需要一个,在Joomla中这是非常简单的。现在来增加按钮来处理添加,修改,删除记录,还需要增加一个toolbar上的标题。

以下的代码就可以添加按钮了,为添加按钮,我们使用了Joomla的 JToolBarHelper 静态类。

JToolBarHelper::title(   JText::_( 'Hello Manager' ), 'generic.png' );
JToolBarHelper::deleteList();
JToolBarHelper::editListX();
JToolBarHelper::addNewX();


以上的三个方法创建了三个按钮,deleteList()有三个可选参数,一是提示用户确认删除的字符串,二是请求中需要发送的task,默认是remove,三是显示在删除按钮下边的文字。

editListX()和addNewX()方法有两个参数,一是task(默认的是edit和add),二是按钮下显示的文字。

请注意JText::_ 方法,这是一个处理多语言的方便的函数,这个寻找你语言文件中对应的字符串,并返回转换后的字符串,如果没有找到字符串,将直接返回传递给JText::_的字符串。如果你要翻译你的组件,你要做的工作就是创建一个语言文件,这个语言文件包含字符串的map集合。


复选框和链接

按钮现在有了,可是修改和删除是要针对已存在的记录。但是需要用户选择那些记录需要进行这些操作。因此,我们在模板中添加了复选框。我们在表格中添加额外的一列。在这一个列的表头中,我们添加了一个复选框,这个复选框用来选中和清除所有复选框的装提案。

<th width="20">
    <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count( $this->items ); ?>);" />
</th>

Joomla的Javascript包含了一个函数checkAll,这里我们使用了这个函数。
接下来需要给每一行添加一个复选框,Joomla的JHTML类有一个函数JHTML::_(),以下就是代码:

$checked    = JHTML::_( 'grid.id', $i, $row->id );

$row =& $this->items[$i];

<td>
    <?php echo $checked; ?>
</td>

需要需要修改记录的时候,先选中复选框,然后再点击上边的edit按钮,这样的操作比较繁琐,因此,我们要添加一个链接,直接进入编辑界面。

以下是代码:

$link = JRoute::_( 'index.php?option=com_hello>controller=hello>task=edit>cid[]='. $row->id );

<td>
    <a href="/<?php echo $link; ?>"><?php echo $row->greeting; ?></a>
</td>

值得注意的是,链接中的controller指向hello controller,这个controller处理数据操作。

在返回看以下form,其中有四个隐藏的输入域。第一个是option,这是是进入component必须的,第二是task,对应这toolbar上的按钮操作,如果没有这个字段,javascript将报错,从而操作失败。第三个字段是boxchecked,主要是有多少复选框被选中,edit和delete按钮操作会检查这个字段不小于0,最后一个是controller,这个输入决定采用那个controller.

以下是模板 default.php 的代码清单:

<?php defined('_JEXEC') or die('Restricted access'); ?>
<form action="index.php" method="post" name="adminForm">
<div id="editcell">
    <table class="adminlist">
    <thead>
        <tr>
            <th width="5">
                <?php echo JText::_( 'ID' ); ?>
            </th>
            <th>
                <?php echo JText::_( 'Greeting' ); ?>
            </th>
        </tr>           
    </thead>
    <?php
    $k = 0;
    for ($i=0, $n=count( $this->items ); $i < $n; $i++)
    {
        $row =& $this->items[$i];
        ?>
        <tr class="<?php echo "row$k"; ?>">
            <td>
                <?php echo $row->id; ?>
            </td>
            <td>
                <?php echo $row->greeting; ?>
            </td>
        </tr>
        <?php
        $k = 1 - $k;
    }
    ?>
    </table>
</div>

<input type="hidden" name="option" value="com_hello" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="controller" value="hello" />

</form>

现在hellos view完成了,去试试吧。

posted on 2009-12-26 22:03  14的路  阅读(817)  评论(0编辑  收藏  举报

导航

友情链接:源码下载