Php Can';t在joomla mvc组件中正确实现jroute功能

Php Can';t在joomla mvc组件中正确实现jroute功能,php,joomla,joomla2.5,joomla3.0,joomla-component,Php,Joomla,Joomla2.5,Joomla3.0,Joomla Component,我已经制作了Joomla2.5(也适用于Joomla3)组件 为了测试组件,我已经创建了一个菜单项“mycomtest main”,并将组件放置在该菜单项页面中。所以完整的本地测试url是“localhost/joomla/mycomtest main” 组件列出了许多项,当单击条目表单时会显示一个按钮,这是我的一个条目表单视图,mvc组件和url变成“localhost/joomla/mycomtest main?task=edit&id=4”,因为我使用JRoute::((“index.ph

我已经制作了Joomla2.5(也适用于Joomla3)组件

为了测试组件,我已经创建了一个菜单项“mycomtest main”,并将组件放置在该菜单项页面中。所以完整的本地测试url是“localhost/joomla/mycomtest main”

组件列出了许多项,当单击条目表单时会显示一个按钮,这是我的一个条目表单视图,mvc组件和url变成“localhost/joomla/mycomtest main?task=edit&id=4”,因为我使用JRoute::((“index.php?…)来保持安全的url

因此,在填写并提交上述输入表单后,它被重定向回默认视图-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>
所以,我如何去,以便在条目视图表单提交后,我重定向到菜单项页面与 下面的url是否正确?-

http://localhost/joomla/mycomtest-main/

这是因为您没有为组件构建路由器。您可以检查位于components/com_user内部的router.php,或者按照下面的方法编写自己的路由

或者每次使用重定向时都可以这样做:

$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);
$menu=$app->getMenu();
$items=$menu->getItems('component','com_yourcom');
$itemid=JRequest::getint('itemid');
对于($i=0,$n=count($items);$i<$n;$i++){
//检查是否找到“重新发送”菜单项。
如果(!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);
$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);