如何使用表单提交方法=“;得到“;在朱姆拉


How to using form submit method="get" in joomla

我有一个示例代码:

<?php
$id = JRequest::getVar('id');
$action = "index.php?option=com_test&id=".$id;
?>
<form action="<?php echo $action ?>" method="get">
<input type="text" name="id" value=""/>
<input type="submit" value="submit" name="submit" />
</form>

当我提交表单时,url是"index.php&id=..."=>错误找不到组件

如何修复结果"index.php?option=com_test&id=..."

JROUTE是什么

forum action中,您应该使用JRoute(组件路由器)中的功能将框架中的URL正确路由到组件。JRoute::_('index.php?option=com_test&id=".$id');

为什么

为了避免通过菜单管理器创建菜单项时出现问题,您的代码将不兼容(即将显示错误no component can be found)。

不兼容?你到底是什么意思

这可能是因为有人可能创建了一个菜单项index.php/myMenuItem/,根据joomla标准,该菜单项使默认url ?option=com_test不兼容。

别名如何在URL中使用

对于菜单项,Joomla!使用别名作为URL插件。假设您使用了前两个SEF URL选项,并创建了一个名为Products的菜单项。您的URL将是example.com/products.

Joomla!还使用URL中数据的主键值来帮助路由器导航到正确的页面。继续前面的例子,如果你的产品菜单项是针对文章/类别博客的,那么文章标题和/或阅读更多链接的链接将有三个部分:

  • 菜单项URL-example.com/products
  • 此外,类别的主键和类别别名-32水果
  • 另外,文章的主键和文章别名-1-苹果;完整的URL为:http://example.com/products/32-fruit/1-apple

信贷(JRoute,2011)

实施

<?php
$id = JRequest::getVar('id');
$action = "index.php?option=com_test&id=".$id; ?>
<form action="<?php echo JRoute::_($action); ?>" method="get">
<input type="text" name="id" value=""/>
<input type="submit" value="submit" name="submit" />
</form>

其他示例

如果您想了解JRoute是如何在其他组件中实现的,那么在管理员组件com_menus的视图部分可以找到一个很好的位置。在目录com_menus/views/items/tmpl/edit.php