我有一个表单,我在jquery模式对话框中动态构建。
var $myform = jQuery("<form id='EditForm' method='post' action='index.php?option=com_mycomponent&task=edit'></form>");
...
它由我的控制器中的edit
方法处理,然后我重定向回所需的页面:
JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_mycomponent'));
此表单中的提交有效且一切都很好,除了我被路由回来的网址。它应该是
index.php?option=com_mycomponent
(或SEF网址)
但我得到了:
components/mycomponent/
从技术上讲,这是相同的页面,但现在它搞砸了我之后尝试做的任何其他操作。我猜测我在javascript中创建表单是问题的一部分。我打赌如果我把
<?php echo JRoute::_('index.php?option=com_mycomponent') ?>
可能有用。但我不能这样做,因为这是一个单独的JavaScript文件中的表单,我没有PHP可用。有什么想法我可以做什么?
答案 0 :(得分:0)
您获得的网址是正确的。它是index.php?option=com_mycomponent
的SEF网址。
您可以添加Itemid(菜单项),以便SEF URL更漂亮。或者您可以跳过JRoute部分,然后获得非SEF URL。
更新: 要获取当前活动的菜单itemid,只需使用JRequest(depreceated)或JInput(http://docs.joomla.org/Retrieving_request_data_using_JInput)从当前URL获取它:
$itemid = JFactory::getApplication()->input->get('Itemid', '0', 'INT');
但是如果有一个活动的菜单项,JRoute应该已经自己添加它。