【问题标题】:Joomla router problemsJoomla路由器问题
【发布时间】:2017-08-15 15:02:38
【问题描述】:

我有一个适用于添加管理器组件的代码,但他们做了一些更改,现在不再工作了。 旧代码是这样的

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。

【问题讨论】:

    标签: php url joomla router


    【解决方案1】:

    您的代码最初是为使用两个不同的变量($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;
    

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 2017-08-21
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2019-01-06
      相关资源
      最近更新 更多