我正在构建一个名为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
默认显示列表页面。
答案 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
)