如何将菜单项指向组件的任务?

时间:2015-07-30 20:19:34

标签: joomla

如何将Joomla菜单项指向自定义组件中的特定任务?我创建指向我的视图的菜单项时没有遇到任何问题,当我在菜单中选择我的组件时,列表中的每个视图都可用。但我还没有找到一种方法将菜单路由到我的组件任务之一。

在某些情况下,我使用控制器方法(即任务)来决定向用户呈现哪些模型和视图。通常这是我需要显示来自多个模型的数据,或者我需要使用会话状态中的信息来确定哪个视图适合用户。在这些情况下,我需要一个指向任务的菜单项。

那么,我如何获得一个菜单项来将用户带到" index.php?option = com_mycomponent& task = do.something"?

你问我已经尝试了什么?我已经查看了我能找到的每个Google参考资料,似乎没有人能解决这个问题。我要么找错了,要么就这么容易死,没有人曾经不得不寻求帮助。我还浏览了Joomla组件和&菜单项,找不到指向控制器任务的菜单项的示例。

2 个答案:

答案 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');

        }

    }

enter image description here