0

我有一个示例代码:

<?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=...

4

1 回答 1

2

JROUTE是什么?

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

为什么?

为避免通过Menu Manager创建菜单项时出现问题,您的代码将不兼容(即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 中数据的主键值来帮助路由器导航到正确的页面。继续前面的示例,如果您的产品菜单项用于文章/类别博客,则文章标题和/或阅读更多链接的链接将包含三个部分:

信用(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中。

于 2012-07-17T02:43:37.217 回答