如何将Joomla菜单项指向自定义组件中的特定任务?我创建指向我的视图的菜单项时没有遇到任何问题,当我在菜单中选择我的组件时,列表中的每个视图都可用。但我还没有找到一种方法将菜单路由到我的组件任务之一。
在某些情况下,我使用控制器方法(即任务)来决定向用户呈现哪些模型和视图。通常这是我需要显示来自多个模型的数据,或者我需要使用会话状态中的信息来确定哪个视图适合用户。在这些情况下,我需要一个指向任务的菜单项。
那么,我如何获得一个菜单项来将用户带到" index.php?option = com_mycomponent& task = do.something"?
你问我已经尝试了什么?我已经查看了我能找到的每个Google参考资料,似乎没有人能解决这个问题。我要么找错了,要么就这么容易死,没有人曾经不得不寻求帮助。我还浏览了Joomla组件和&菜单项,找不到指向控制器任务的菜单项的示例。
答案 0 :(得分:2)
您可以在请求字段集中添加字段。将其命名为任务。值将是“do.something”。制作字段type="hidden"
。
我建议隐藏,因为你真的不希望用户能够改变它。
请求字段集适用于直接使用格式&name=value
进入网址的字段。
答案 1 :(得分:1)
我发现上面的答案不够灵活,最后发现它可以完美运行,您可以覆盖菜单项表单 xml(administrator/components/com_menus/models/forms/item.xml)并使链接字段可编辑,以便您可以添加您想要的任何请求参数,包括任务。
确保您保留/添加请求的视图名称,否则无法确定链接类型,因此即使不相关也要添加它,例如。 &view=你的观点。
在下面的ContentPrepareForm上查看系统插件
function onContentPrepareForm(&$form, $data) {
$option = JFactory::getApplication()->input->get('option');
// allow us to edit the link field of the menu item for this component to include some custom request values
if($option == 'com_menus' && $data->type=='component' && $data->request['option']=='com_your_component_name'){
$form->setFieldAttribute('link','readonly','false');
}
}