mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
API: add $includeGetVars flag for SS_HTTPRequest() to return the URL with the attached GET parameters.
This commit is contained in:
parent
168663657b
commit
16cb504d8e
@ -228,10 +228,30 @@ class SS_HTTPRequest implements ArrayAccess {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the URL used to generate the page
|
||||
*
|
||||
* @param bool $includeGetVars whether or not to include the get parameters\
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function getURL() {
|
||||
return ($this->getExtension()) ? $this->url . '.' . $this->getExtension() : $this->url;
|
||||
function getURL($includeGetVars = false) {
|
||||
$url = ($this->getExtension()) ? $this->url . '.' . $this->getExtension() : $this->url;
|
||||
|
||||
if ($includeGetVars) {
|
||||
// if we don't unset $vars['url'] we end up with /my/url?url=my/url&foo=bar etc
|
||||
|
||||
$vars = $this->getVars();
|
||||
unset($vars['url']);
|
||||
|
||||
if (count($vars)) {
|
||||
$url .= '?' . http_build_query($vars);
|
||||
}
|
||||
}
|
||||
else if(strpos($url, "?") !== false) {
|
||||
$url = substr($url, 0, strpos($url, "?"));
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -242,4 +242,16 @@ class HTTPRequestTest extends SapphireTest {
|
||||
$req->addHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
$this->assertTrue($req->isAjax());
|
||||
}
|
||||
|
||||
public function testGetURL() {
|
||||
$req = new SS_HTTPRequest('GET', '/');
|
||||
$this->assertEquals('', $req->getURL());
|
||||
|
||||
$req = new SS_HTTPRequest('GET', '/assets/somefile.gif');
|
||||
$this->assertEquals('assets/somefile.gif', $req->getURL());
|
||||
|
||||
$req = new SS_HTTPRequest('GET', '/home?test=1');
|
||||
$this->assertEquals('home?test=1', $req->getURL(true));
|
||||
$this->assertEquals('home', $req->getURL());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user