Joomla文档中文翻译 - MVC组件开发:后台界面 - MVC互动模式 - 控制器

thumb-joomla-doc-viiiix在前面一篇文档中,我们通过一个图书馆借阅管理的例子来了解了MVC组件前后台运作模式;今天继续,来看看组件管理后台的控制器(controller)。

参考前一篇文档最后的列表示意,对应“用户”、“书籍”和“借阅关系”这三个不同的后台管理视图,我们需要在主控制器下创建三个子控制器;控制器的文件结构如下:

<root>/administrator/controller.php
<root>/administrator/controllers/users.php
<root>/administrator/controllers/books.php
<root>/administrator/controllers/relation.php

控制器controller.php下面的三个子控制器分别对应着“用户”、“书籍”和“借阅关系”这三个后台管理;每个子控制器会响应各自的操作请求,通过同名的模型(model)获取所需的数据,最终通过视图将数据内容输出。

对于控制器,通常需要注意两个不同的任务类型:

  • 激活任务:例如在管理后台勾选某些内容项目并进行编辑。
  • 结果任务:例如对之前编辑过的数据进行保存。

对应这两种任务类型的代码模式如下:

function <activating task>()  // <-- edit, add, delete 
{
JRequest::setVar( 'view', '[<componentname> | users | books | relation ]' );
JRequest::setVar( 'layout', 'default' ); // <-- The default form is named here but in complex
// views multiple layouts might be needed.
parent::display();
}

function <resulting task>() // <-- save, remove
{
$model = $this->getModel('[<componentname> | users | books | relation ]');
if(!$model->action() ) { // <-- action could be delete() or store()
$msg = JText::_( 'Error: Could not perform action' );
} else {
$msg = JText::_( 'Action executed' );
}

$this->setRedirect( 'index.php?option=<componentname>', $msg );
}

在结果任务被完成之后,我们会被带回到该组件的默认视图页面,即入口点。

Joomla MVC组件管理后台的控制器方面的简介呢,就到这里;接下来,没什么悬念的,我们将对模型及视图方面的知识做一做了解。

译者:Viiiix7210

如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看官方英文文档: Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface

感觉自己脑袋已经青了,一天天这些东西搞下来有点不会说话了;自己觉得最近的内容太抽象了,东西的示范性也不是很强,或是说无论原语言的表达还是知识本身,自己还没能很透彻的掌握;尽力而为吧,既然开头了我就不大想中途夭折...哪位朋友如果看着不顺眼,有什么意见建议或指正,请尽管向我拍来。


收藏与分享

添加评论


Security code
换一张图