2016-08-26 62 views
0

我正在開發一個已經在joomla中完成的項目。我必須在那裏解決一些問題。

他們在joomla 3.0中有一個訂購組件。主頁面有兩個選項。一個是定期訂購,另一個是特殊訂單。它們是作爲單選按鈕給出的。每個按鈕上都有onclick函數,如下所示:在joomla中使用window.location 3

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 

請注意,第二個url缺少參數view = form & layout = edit。我怎樣才能解決這個問題?我應該添加一個新的菜單項。如果是的是什麼類型?或者直接在window.location.href中直接硬編碼url?

+0

我假設你嘗試使用JRoute渲染的菜單端點的ID是516?您嘗試將URL參數Itemid = 516添加到您傳遞給JRoute的url params字符串中? –

回答

0

謝謝大家的答案。我用另一種方法來解決這個問題。

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

這只是一個隨意的出手,但如果你看看在JROUTE清晰度here它說,有三個選項:_($url, $xhtml=true, $ssl=null)

第二個聽起來很有趣,我:

$ XHTML通過&爲XML compilance

也許將此選項設置爲false,就看你的鏈接會發生什麼替換&?

在由觸發代碼的部分看起來像這樣:

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

所以這個設置爲false至少不str_replace函數的&(這是唯一重要區別,我可以這兩種情況之間看)... 我知道有一個替換這個的原因,但是...如果你使用utf8,它應該不是一個問題,我猜...

我的意思是..另一件事,這是非常奇怪的是,JRoute似乎翻轉選項和ordertype參數......無論出於何種原因。

希望我至少可以讓在這個部分輸入:d

問候

1

我的第一個建議是隻要移動&ordertype=2 - 部分出JROUTE ::的_() - 調用,如這似乎混淆了JRoute。

因此嘗試使用:

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

(這是一個有點難看,bquarta可能是正確的,雖然:)