我制作了joomla 2.5(也在joomla 3中工作)组件。
为了测试组件,我创建了一个菜单项“mycomtest-main”,并在该菜单项页面中放置了组件。所以完整的本地测试网址是“localhost / joomla / mycomtest-main”。
组件列出了许多项目,并且在显示单击的条目表单时有一个按钮,这是我的mvc组件的条目表单视图,url变为“localhost / joomla / mycomtest-main?task = edit& id = 4”,因为我使用JRoute :: _(“index.php?...”)来保持安全网址。
因此,在上面的填写和提交的表单之后,它被重定向回默认视图 - localhost / joomla / mycomtest-main但不幸的是url变成了 - localhost / joomla / component / mycomtest-main /而是localhost / joomla / mycomtest-main
我的组件条目表单视图如下所示 -
<form action="index.php" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data">
<input type="hidden" name="option" id="option" value="<?php echo $_REQUEST['option']; ?>" />
<input type="hidden" name="task" id="task" value="save" />
<input type="hidden" name="id" id="id" value="<?php if($row!=NULL){ echo $row->id; }?>" />
<input type="hidden" name="page" id="page" value="<?php echo JRequest::getVar('page'); ?>" />
.............rest of the html contents along with submit button
</form>
同样在我的mvc组件的controller.php文件中,我以这种方式使用了jroute -
function save()
{
$model = $this->getModel('entry');
if($model->store())
{ $msg = "saved successfully"; $type = 'message'; }
else
{ $msg = 'error found'; $type = 'error';
}
$urlSet=JRoute::_("index.php?option=". $_REQUEST['option']."");
$this->setRedirect($urlSet, $msg, $type);
}
所以我怎么去,以便在提交输入视图表单后,我被重定向到菜单项页面 正确的网址在下面? -
http://localhost/joomla/mycomtest-main/
答案 0 :(得分:0)
那是因为你没有为组件构建路由器。你可以查看components / com_user里面的router.php或编写自己的路由,按照这个http://docs.joomla.org/Routing
或者每次使用重定向时都可以这样做:
$menu = $app->getMenu();
$items = $menu->getItems('component', 'com_yourcom');
$itemid = JRequest::getint( 'Itemid' );
for ($i = 0, $n = count($items); $i < $n; $i++) {
// Check to see if we have found the resend menu item.
if (!empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'yourview')) {
$yourviewid = $items[$i]->id;
}
}
$redirect = JRoute::_("index.php?option=com_yourcom&Itemid=".$yourviewid ,false);
$this -> setRedirect($redirect);