2017-08-15 88 views
-1

我有一個適用於addsmanager組件的代碼,但他們做了一些更改,現在不再工作了。 舊的代碼是這樣Joomla路由器問題

function getAdsmanagerRouteContent($id) 
{ 
    $db =JFactory::getDBO(); 
    $sql = "SELECT category,ad_manufacturers,ad_modelauto,ad_jetmodels,ad_model FROM #__adsmanager_ads WHERE id = ".(int)$id; 
    $db->setQuery($sql); 
    $result = $db->loadObject(); 
     $url = TText::_($result->ad_manufacturers); 
     if ($result->ad_modelauto != "") { 
      $url .= "-".TText::_($result->ad_modelauto); 
     } 
     if ($result->ad_jetmodels != "") { 
      $url .= "-".TText::_($result->ad_jetmodels); 
     } 
     if ($result->ad_model != "") { 
      $url .= "-".TText::_($result->ad_model); 
     } 

    $url = TTools::stringURLSafe($url); 
    $url = JString::substr($url ,0,30); 
    return $url ; 
} 

他們有這樣的代碼現在

function getAdsmanagerRouteContent($id) 
{ 
    $db =JFactory::getDBO(); 
    $sql = "SELECT ad_headline FROM #__adsmanager_ads WHERE id = ".(int)$id; 
    $db->setQuery($sql); 
    $result = $db->loadResult(); 
    $result= TTools::stringURLSafe($result); 
    $result = JString::substr($result,0,30); 
    return $result; 
} 

至極我有它修改這樣

function getAdsmanagerRouteModel($id) 
{ 
    $db =JFactory::getDBO(); 
    $sql = "SELECT ad_model,ad_motomodel FROM #__adsmanager_ads WHERE id = ".(int)$id; 
    $db->setQuery($sql); 
    $result = $db->loadResult(); 
     if ($result->ad_model != "") { 
      $result .= "-".TText::_($result->ad_model); 
     } 
     if ($result->ad_motomodel != "") { 
      $result .= "-".TText::_($result->ad_motomodel); 
     } 
    $result= TTools::stringURLSafe($result); 
    $result = JString::substr($result,0,30); 
    return $result; 
} 

的ad_model被加載,但如果不是ad_model是ad_motomodel這個ISN t加載。 是使這個代碼有效的方法嗎?我不擅長PHP。

回答

0

您的代碼原本是用兩個不同的變量($ result和$ url)編寫的,但是使用一個代替。

$result = $db->loadResult(); 
if ($result->ad_model != "") { 
    $result .= "-".TText::_($result->ad_model); 
} 

一旦第三行被執行,您現在不再有對象$result。它消失了。您現在有一個字符串$result,其中包含您之前的對象產生的「字符串化」(本例中爲空字符串)加上短劃線以及ad_model的內容。之後,您不能再訪問$result->ad_motomodel

真的需要的是這樣的:

$db =JFactory::getDBO(); 
$sql = "SELECT ad_model,ad_motomodel FROM #__adsmanager_ads WHERE id = ".(int)$id; 
$db->setQuery($sql); 
$result = $db->loadResult(); 
$url=""; 
if ($result->ad_model != "") { 
    $url .= "-".TText::_($result->ad_model); 
} 
if ($result->ad_motomodel != "") { 
    $url .= "-".TText::_($result->ad_motomodel); 
} 
$url = TTools::stringURLSafe($url); 
$url = JString::substr($url,0,30); 
return $url; 
+0

我綁這一點,但不work.Is的第一個例子。 –