在本节中我们将在后台显示我们的第一个后台页面。并分析后台的执行过程。
在joomla中,后台的执行流程和前台基本一样,也是MVC模式开发的。有了前台开发的经验,后台就不是大问题了。
直接看代码:
后台的入口点文件 guestbook.php(.注意以下所说的文件都是administrator/components/com_guestbook/目录下的)
defined('_JEXEC') or die('you can not access this file!'); // import joomla controller library jimport('joomla.application.component.controller'); // get an instance of the controller prefixed by guestbook $controller = JController::getInstance('Guestbook'); $jinput = JFactory::getApplication()->input; $task = $jinput->get('task',"",'STR'); // perform the request task $controller->execute($task); // redirect if set by controller $controller->redirect();
这里的执行流程和前台一样,只是代码我们采用新的书写方式(这种方式在2.5的开发中比较推荐,当然,我们以前的方式也是可以用的)
首 先调用JController类的getInstance方法得到主控制器。JController::getInstance()方法接受两个参数,一 个是控制器的前缀,另一个是一个可选的配置数组。这个方法将会在JPATH_COMPONET下寻找控制文件。(有待补充)
然后通过调用代码:
$jinput = JFactory::getApplication()->input;得到JInput对象。调用JInput对象的get方法得到需要执行的任务。
入口点文件产生有了之后,就是新建一个控制器文件。
新建文件controller.php文件
controller.php文件的内容为:
<?php defined('_JEXEC') or die('Restricted access'); jimport('joomla.application.component.controller'); class GuestBookController extends JController { function display($cachable = false,$urlparams = false) { // set default view if not set $input = JFactory::getApplication()->input; $input ->set('view',$input->getCmd('view','messagelist')); //call parent behavior parent::display($cachable); } }
代码没什么好讲的。我们控制器类的display方法中使用了$input->set()来指定需要展示的视图为messaglist.(也就是显示一个消息列表的视图。)
建立视图的方法和前台一样。
新建views/messageslist/view.html.php文件
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) { //display the template parent::display($tpl); } }
视图文件有了之后就是输出默认的布局文件了。
在messagelist视图下新建文件夹tmpl.在tmpl下新建default.php文件。代码如下:
Welcome to www.Zmax99.com
到此,我们就完成了入口点文件,控制器文件,视图类文件和视图模版文件。
看一下执行效果吧:
说明我们的组件在管理后台成功执行了。美中不足的是有一个小小的警告。
这不是我们代码的问题,这是joomla自身的问题。解决方案请访问论坛:
http://www.zmax99.com/forum/component-develop/32-notice-undefined-property-jadministrator-jcomp
评论 (0)