无法在 joomla mvc 组件中正确实现 jroute 功能



我已经制作了joomla 2.5(也适用于joomla 3(组件。

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

组件列出了许多项目,当单击输入表单时有一个按钮,这是我的 mvc 组件和 url 的条目表单视图,并且 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>

同样在我的 mvc 组件的控制器.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/

这是因为您没有为组件构建路由器。 您可以检查位于组件/com_user内部.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);

相关内容

  • 没有找到相关文章

最新更新