Actions

API15

JRoute/

From Joomla! Documentation

< API15:JRoute
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

Contents

Description

Translates an internal Joomla URL to a humanly readible URL.

[<! removed edit link to red link >]

<! removed transcluded page call, red link never existed >

Syntax

_($url, $xhtml=true, $ssl=null)
Parameter Name Default Value Description
$url $url Absolute or Relative URI to resource
$xhtml true $xhtml Replace & by & for xml compilance
$ssl null $ssl Secure state for the resolved URI 1: Make URI secure using global secure site URI 0: Leave URI in the same secure state as it was passed to the function -1: Make URI unsecure using the global unsecure site URI

Returns

The translated humanly readible URL

Defined in

libraries/joomla/methods.php

Importing

jimport( 'joomla.methods' );

Source Body

function _($url, $xhtml = true, $ssl = null)
{
        // Get the router
        $app    = &JFactory::getApplication();
        $router = &$app->getRouter();
 
        // Make sure that we have our router
        if (! $router) {
                return null;
        }
 
        if ( (strpos($url, '&') !== 0 ) && (strpos($url, 'index.php') !== 0) ) {
    return $url;
        }
 
        // Build route
        $uri = &$router->build($url);
        $url = $uri->toString(array('path', 'query', 'fragment'));
 
        // Replace spaces
        $url = preg_replace('/\s/u', '%20', $url);
 
        /*
         * Get the secure/unsecure URLs.
 
         * If the first 5 characters of the BASE are 'https', then we are on an ssl connection over
         * https and need to set our secure URL to the current request URL, if not, and the scheme is
         * 'http', then we need to do a quick string manipulation to switch schemes.
         */
        $ssl    = (int) $ssl;
        if ( $ssl )
        {
                $uri             =& JURI::getInstance();
 
                // Get additional parts
                static $prefix;
                if ( ! $prefix ) {
                        $prefix = $uri->toString( array('host', 'port'));
                        //$prefix .= JURI::base(true);
                }
 
                // Determine which scheme we want
                $scheme = ( $ssl === 1 ) ? 'https' : 'http';
 
                // Make sure our url path begins with a slash
                if ( ! preg_match('#^/#', $url) ) {
                        $url    = '/' . $url;
                }
 
                // Build the URL
                $url    = $scheme . '://' . $prefix . $url;
        }
 
        if($xhtml) {
                $url = str_replace( '&', '&amp;', $url );
        }
 
        return $url;
}

[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >

Examples

Example explaining adding and removing GET parameters

//Suppose we have the current URL = .../index.php?var1=1&var2=2
JRoute::_('?var3=3')      // will replace all parameters     -> .../index.php?var3=3
JRoute::_('&var3=3')      // will add a parameter            -> .../index.php?var1=1&var2=2&var3=3
JRoute::_('&var3')        // will remove a parameter         -> .../index.php?var1=1&var2=2&var3=3
JRoute::_('&var3=3&var1') // will add and remove a parameter -> .../index.php?var2=2&var3=3

Comments

<CodeExamplesForm />