Joomla菜单链接组件,错误的默认链接地址

时间:2014-01-03 03:25:31

标签: php joomla

我正在构建一个名为event的joomla组件,并设置了一个名为event的菜单,该菜单链接到该组件。当我点击菜单链接时,它指示我不是默认事件列表页面,而是事件注册页面。我想知道出了什么问题。

这是controller.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// import Joomla controller library
jimport('joomla.application.component.controller');


class EventController extends JControllerLegacy
{
    function display() { 
            $this->listing();
    }

    function listing() {


             JRequest::setVar( 'view', 'listing' );
             JRequest::setVar( 'layout', 'default' );
             parent::display(); 
    }

    function edit() {

             JRequest::setVar( 'view', 'edit' );
             JRequest::setVar( 'layout', 'default' );
             parent::display(); 

    }

    function save() {
            $model= & JModelLegacy::getInstance('Event','EventModel');
            $model->save_event();
    }

    function register() {

             JRequest::setVar( 'view', 'register' );
             JRequest::setVar( 'layout', 'default' );
             parent::display(); 

    }
    function register_save() {
            $model= & JModelLegacy::getInstance('Event','EventModel');
            $model->register_event();
    }



}//end 

菜单链接

http://www.example.com/Joomla_3.2.1/index.php?option=com_event&view=register&Itemid=481

而不是

http://www.example.com/Joomla_3.2.1/index.php?option=com_event

默认显示列表页面。

1 个答案:

答案 0 :(得分:1)

您应该为listing视图创建一个清单;在Joomla!通常我们将菜单项映射到视图。在router.php中,您可以选择取消设置您不需要的参数,也不要让网址显示。

组件控制器中的任务通常用于组件内调用,执行后应重新路由到视图。应该在视图上调用组件路由器,以便为视图显示不错的SEF URL。 注意:只有在将参数传递给视图时才需要router.php,例如,请参阅com_content文章视图,该视图会收到id参数。如果您没有参数,那么您不需要自定义router.php,因为Joomla将生成包含视图和布局的URL。

要将清单添加到视图布局(例如/views/listing/tmpl/default.php),只需创建一个xml文件default.xml即可。您需要为用户创建新菜单项时可用的任何视图布局创建清单。只需添加XML清单,即可在菜单项配置中使用新布局。

在该文件中,您可以使用字段周围的<fieldset name="request">包装设置额外的请求参数。

链接由Joomla生成,而不是由您的组件生成。您只负责处理您的部分参数,因此选项和Itemid将由Joomla处理,您应该在router.php中处理的任何其他参数(位于组件的根目录中,即/components/com_listings/router.php