在joomla 3中使用window.location

时间:2016-08-26 09:43:18

标签: javascript php joomla joomla3.0

我正在开发一个已经在joomla中完成的项目。我必须在那里解决一些问题。

他们在joomla 3.0中有一个场所订单组件。主页面有两个选项。一个是定期订单,另一个是特殊订单。它们作为单选按钮给出。每个按钮上都有onclick功能,如下所示

onclick='window.location.href=("<?php echo JRoute::_('index.php?option=com_order'); ?>")'

onclick='window.location.href=("<?php echo JRoute::_('index.php?option=com_order&ordertype=2'); ?>")'

第一个按钮将形成如下URL。

index.php?option=com_order&view=form&layout=edit&Itemid=516&lang=en

但是对于第二个url不正确并且它给出了一些错误。

index.php?ordertype=2&option=com_order&Itemid=516&lang=en

请注意,第二个网址缺少参数view = form&amp; layout = edit。我怎样才能解决这个问题?我应该添加一个新菜单项吗?如果是什么类型?或者直接在window.location.href中硬编码url?

3 个答案:

答案 0 :(得分:1)

这只是一个随机镜头,但是如果您看一下JRoute-Definition here,它说有三个选项:_($url, $xhtml=true, $ssl=null)

第二个听起来很有趣:

  

$ xhtml替换&amp;由&amp; for xml compilance

也许将此选项设置为false,以查看您的链接会发生什么?

代码中由此触发的部分如下所示:

if($xhtml) {
    $url = str_replace( '&', '&amp;', $url );
}

因此将此设置为false至少不会阻止&amp; (这是我在两种情况之间可以看到的唯一关键区别)...... 我知道有一个理由要更换它,但是......好吧......如果你使用的是utf8,那我觉得应该不是问题......

我的意思是......另一件事,那肯定是奇怪的是,JRoute无论出于什么原因似乎都会翻转选项和ordertype-parameter ......

希望我能至少给出一些意见:D

问候

答案 1 :(得分:1)

我的第一个建议是将&ordertype=2 - 部分移出JRoute :: _() - 调用,因为这似乎会混淆JRoute。

所以尝试使用:

onclick='window.location.href=("<?php 
  echo JRoute::_('index.php?option=com_order') . '&ordertype=2'; 
?>")'

(这有点难看,而且bquarta可能是对的,但是:)

答案 2 :(得分:0)

谢谢大家的答案。我只用另一种方法来解决这个问题。

<?php $u = JURI::getInstance();
$u->setVar( 'ordertype', '2' );?>
onclick='window.location.href=("<?php echo JRoute::_($u->toString()); ?>")'