实际上(在 2.5.14 上),当您单击 Category Manger 视图中的“新建”按钮时,第一个请求会生成一个 POST:
POST /administrator/index.php?option=com_categories&view=categories HTTP/1.1
POST
请求通常在HTTP
消息正文中发送查询字符串,而不仅仅是在 URL 中,在这种情况下,POST
请求在正文中具有以下表单数据:
filter_search
filter_level
filter_published
filter_access
filter_language
limit 5
limitstart 0
order[] 1
order[] 1
order[] 1
order[] 1
order[] 2
batch[assetgroup_id]
batch[language_id]
batch[category_id]
batch[move_copy] m
extension com_content
task category.add
boxchecked 0
filter_order a.lft
filter_order_Dir asc
original_order_values 1,1,1,1,2
796194955f38a0d8db484c92d92ca5ce 1
您会注意到这有一个task
具有值的参数category.add
(不是 item.add ),当在入口点文件中调用JController
时,类会考虑到这一点:getInstance($prefix, $config)
com_categories
$controller = JControllerLegacy::getInstance('Categories');
该类JController
转换category.add
为 a $type
ofcategory
和 a $task
of add
。该$type
值用于与组件基本路径(在本例中/pathto/site/administrator/components/com_categories
)一起组装到控制器的路径。
因此,当实例化类在入口点文件中JController
收到->execute($task)
消息时:com_categories/categories.php
$controller->execute(JRequest::getVar('task'));
它实际上已经是一个类型的控制器,CategoriesControllerCategory
这是您期望处理New
按钮请求的类型。