我有一个适用于addmanager组件的代码,但是它们做了一些更改,现在不再工作了。 旧代码就是这个
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,则不会加载。 是一种使这段代码有效的方法吗?我不擅长php。
答案 0 :(得分: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;