[英]Joomla menu linked with component, wrong default link address
我正在构建一个名为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
默认情况下显示列表页面。
您应该为listing
视图创建清单。 在Joomla! 通常,我们将菜单项映射到视图。 在router.php中,您可以选择取消设置不需要且不希望显示URL的任何参数。
组件控制器中的任务通常用于组件内调用,执行后应重新路由到视图。 应该在视图上调用组件路由器,以便为视图显示漂亮的SEF url。 注意:仅当您将参数传递给视图时,才需要router.php,例如,请参见com_content article视图,该视图接收一个id
参数。 如果没有参数,则无需自定义router.php,因为Joomla将生成包括视图和布局的URL。
要将清单添加到视图布局,例如/views/listing/tmpl/default.php
,只需创建一个xml文件default.xml
。 您需要为要在用户创建新菜单项时提供的任何视图布局创建清单。 简单地添加XML清单将使新的布局在菜单项配置中可用。
在该文件中,您可以使用<fieldset name="request">
包装器在字段周围设置额外的请求参数。
链接是由Joomla生成的,而不是由组件生成的。 您仅负责处理部分参数,因此option和Itemid将由Joomla处理,您应在router.php(位于组件根目录中,即/components/com_listings/router.php
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.