我正在开发一个已经在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?
答案 0 :(得分:1)
这只是一个随机镜头,但是如果您看一下JRoute-Definition here,它说有三个选项:_($url, $xhtml=true, $ssl=null)
第二个听起来很有趣:
$ xhtml替换&amp;由&amp; for xml compilance
也许将此选项设置为false,以查看您的链接会发生什么?
代码中由此触发的部分如下所示:
if($xhtml) {
$url = str_replace( '&', '&', $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()); ?>")'