^Status|Draft| ^Todo|Proof read| ====== URL Helper ====== Provides methods for working with URL(s). ===== Methods ===== ==== current() ==== ''url::current()'' returns the current URI string. This method accepts one optional parameter. If you set it to TRUE the query string will be included in the return value. // site_domain = 'localhost/kohana/' // site_protocol = 'http' // index_page = 'index.php' // url_suffix = '.html' // Current URL: http://localhost/kohana/index.php/welcome/home.html?query=string echo url::current(); Returns welcome/home While echo url::current(TRUE); Returns welcome/home?query=string ==== base() ==== ''url::base()'' returns the base URL defined by the ''site_protocol'' and ''site_domain'' in ''config.php''. If your site_domain doesn't have a hostname in it, you will get a relative URL. // site_domain = 'localhost/kohana/' // site_protocol = 'http' echo url::base(); Generates http://localhost/kohana/ ''url::base()'' accepts two **optional** parameters. Set the first parameter to ''TRUE'' if you want to append the ''index_page'' defined in ''config.php'' to the base URL. Via the second parameter you can overwrite the default ''site_protocol'' from ''config.php''. // site_domain = 'localhost/kohana/' // site_protocol = 'http' // index_page = 'index.php' echo url::base(TRUE, 'https'); Generates https://localhost/kohana/index.php ==== site() ==== ''url::site()'' returns a URL based on the ''site_protocol'', ''site_domain'', ''index_page'', ''url_suffix'' defined in ''config.php''. If your site_domain doesn't have a hostname in it, you will get a relative URL. // site_domain = 'localhost/kohana/' // site_protocol = 'http' // index_page = 'index.php' // url_suffix = '.html' echo url::site(); Generates http://localhost/kohana/index.php/.html ''url::site()'' accepts two **optional** parameters. You can pass URL segments via the first one. The second one allows you to overwrite the default ''site_protocol'' from ''config.php''. // site_domain = 'localhost/kohana/' // site_protocol = 'http' // index_page = '' // url_suffix = '.html' echo url::site('admin/login', 'https'); Generates https://localhost/kohana/admin/login.html ==== file() ==== ''url::file()'' returns the URL to a file. Absolute filenames and relative filenames are allowed. * [string] filename * [bool] include the index.php echo url::file('download.zip'); Produces http://domain.tld/download.zip ==== title() ==== ''url::title()'' returns a properly formatted title, for use in a URI. The first parameter, the input title string, is **mandatory**. The optional second parameter is used to set the separator character. By default this is a dash. You can only change this to an underscore. $input_title = ' __Ecléçtic__ title\'s entered by cràzed users- ?> '; echo url::title($input_title, '_'); Generates: eclectic_titles_entered_by_crazed_users What happens to the input title? All non-alphanumeric characters, except for dashes or underscores (depending on the second parameter), will be deleted. However, non-ascii characters will first be [[core:utf8#transliterate_to_ascii|transliterated]] (for example: ''à'' becomes ''a'') in order to keep the URL title as readable as possible. Finally, the URL title is converted to lowercase. ==== redirect() ==== ''url::redirect()'' generates an HTTP Server Header (302) and runs the **system.redirect** event, which will redirect the browser to a specified URL, by default ''site_domain'' defined in ''config.php''. ''url::redirect()'' will always call the php ''exit'' function to prevent further script execution. url::redirect('http://www.whitehouse.gov'); Will redirect the browser to the White House website. The optional second parameter can be used to set the redirect method. The default is 302. // site_domain = 'localhost/kohana/' // site_protocol = 'http' url::redirect('aboutus', 301); Will redirect with a 301 header to ''http://localhost/kohana/aboutus''. If you wish to send a Multiple Choice (300) redirect, provide an array of URIs to the redirect method: url::redirect(array('aboutus','http://www.kohana.php/'), 300); The first URI in the array is considered the preferred URI and will be placed in the Location header. All of the URIs will then be output in a HTML unordered list. Generally the browser will follow the location header and this list will never be seen. However, there is no standard defined behavior for what a user agent should do upon receiving a 300 and the list could be used to present the user with the choices you have given.