Contao\Frontend::addToUrl PHP Метод

addToUrl() публичный статический Метод

Overwrite the parent method as front end URLs are handled differently
public static addToUrl ( string $strRequest, boolean $blnIgnoreParams = false, array $arrUnset = [] ) : string
$strRequest string
$blnIgnoreParams boolean
$arrUnset array
Результат string
    public static function addToUrl($strRequest, $blnIgnoreParams = false, $arrUnset = array())
    {
        $arrGet = $blnIgnoreParams ? array() : $_GET;
        // Clean the $_GET values (thanks to thyon)
        foreach (array_keys($arrGet) as $key) {
            $arrGet[$key] = \Input::get($key, true, true);
        }
        $arrFragments = preg_split('/&(amp;)?/i', $strRequest);
        // Merge the new request string
        foreach ($arrFragments as $strFragment) {
            list($key, $value) = explode('=', $strFragment);
            if ($value == '') {
                unset($arrGet[$key]);
            } else {
                $arrGet[$key] = $value;
            }
        }
        // Unset the language parameter
        if (\Config::get('addLanguageToUrl')) {
            unset($arrGet['language']);
        }
        $strParams = '';
        $strConnector = '/';
        $strSeparator = '/';
        // Compile the parameters string
        foreach ($arrGet as $k => $v) {
            // Omit the key if it is an auto_item key (see #5037)
            if (\Config::get('useAutoItem') && ($k == 'auto_item' || in_array($k, $GLOBALS['TL_AUTO_ITEM']))) {
                $strParams = $strConnector . urlencode($v) . $strParams;
            } else {
                $strParams .= $strConnector . urlencode($k) . $strSeparator . urlencode($v);
            }
        }
        /** @var PageModel $objPage */
        global $objPage;
        $pageId = $objPage->alias ?: $objPage->id;
        // Get the page ID from URL if not set
        if (empty($pageId)) {
            $pageId = static::getPageIdFromUrl();
        }
        $arrParams = array();
        $arrParams['alias'] = $pageId . $strParams;
        $arrParams['_locale'] = $objPage->rootLanguage;
        $strUrl = \System::getContainer()->get('router')->generate('contao_frontend', $arrParams);
        $strUrl = substr($strUrl, strlen(\Environment::get('path')) + 1);
        return $strUrl;
    }

Usage Example

Пример #1
0
 /**
  * Point to `Frontend::addToUrl()` in front end templates (see #6736)
  *
  * @param string  $strRequest      The request string to be added
  * @param boolean $blnIgnoreParams If true, the $_GET parameters will be ignored
  * @param array   $arrUnset        An optional array of keys to unset
  *
  * @return string The new URI string
  */
 public static function addToUrl($strRequest, $blnIgnoreParams = false, $arrUnset = array())
 {
     return \Frontend::addToUrl($strRequest, $blnIgnoreParams, $arrUnset);
 }