always set url parameters when they are available in the app dispatch
prefer url parameters passed into the main method. If they are not present, use the containers urlParameters add space
This commit is contained in:
parent
2fbe8bbcba
commit
bb0c88a577
|
@ -75,7 +75,9 @@ class App {
|
||||||
*/
|
*/
|
||||||
public static function main($controllerName, $methodName, DIContainer $container, array $urlParams = null) {
|
public static function main($controllerName, $methodName, DIContainer $container, array $urlParams = null) {
|
||||||
if (!is_null($urlParams)) {
|
if (!is_null($urlParams)) {
|
||||||
$container['urlParams'] = $urlParams;
|
$container['OCP\\IRequest']->setUrlParameters($urlParams);
|
||||||
|
} else if (isset($container['urlParams']) && !is_null($container['urlParams'])) {
|
||||||
|
$container['OCP\\IRequest']->setUrlParameters($container['urlParams']);
|
||||||
}
|
}
|
||||||
$appName = $container['AppName'];
|
$appName = $container['AppName'];
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,6 @@ class DIContainer extends SimpleContainer implements IAppContainer {
|
||||||
/** @var $c SimpleContainer */
|
/** @var $c SimpleContainer */
|
||||||
/** @var $server SimpleContainer */
|
/** @var $server SimpleContainer */
|
||||||
$server = $c->query('ServerContainer');
|
$server = $c->query('ServerContainer');
|
||||||
$server->registerParameter('urlParams', $c['urlParams']);
|
|
||||||
/** @var $server IServerContainer */
|
/** @var $server IServerContainer */
|
||||||
return $server->getRequest();
|
return $server->getRequest();
|
||||||
});
|
});
|
||||||
|
|
|
@ -68,12 +68,12 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
||||||
$this->items['params'] = array();
|
$this->items['params'] = array();
|
||||||
|
|
||||||
if(!array_key_exists('method', $vars)) {
|
if(!array_key_exists('method', $vars)) {
|
||||||
$vars['method'] = 'GET';
|
$vars['method'] = 'GET';
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($this->allowedKeys as $name) {
|
foreach($this->allowedKeys as $name) {
|
||||||
$this->items[$name] = isset($vars[$name])
|
$this->items[$name] = isset($vars[$name])
|
||||||
? $vars[$name]
|
? $vars[$name]
|
||||||
: array();
|
: array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
||||||
if(count($params) > 0) {
|
if(count($params) > 0) {
|
||||||
$this->items['params'] = $params;
|
$this->items['params'] = $params;
|
||||||
if($vars['method'] === 'POST') {
|
if($vars['method'] === 'POST') {
|
||||||
$this->items['post'] = $params;
|
$this->items['post'] = $params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Handle application/x-www-form-urlencoded for methods other than GET
|
// Handle application/x-www-form-urlencoded for methods other than GET
|
||||||
|
@ -91,12 +91,12 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
||||||
} elseif($vars['method'] !== 'GET'
|
} elseif($vars['method'] !== 'GET'
|
||||||
&& $vars['method'] !== 'POST'
|
&& $vars['method'] !== 'POST'
|
||||||
&& strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') !== false) {
|
&& strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') !== false) {
|
||||||
|
|
||||||
parse_str(file_get_contents($this->inputStream), $params);
|
parse_str(file_get_contents($this->inputStream), $params);
|
||||||
if(is_array($params)) {
|
if(is_array($params)) {
|
||||||
$this->items['params'] = $params;
|
$this->items['params'] = $params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->items['parameters'] = array_merge(
|
$this->items['parameters'] = array_merge(
|
||||||
$this->items['get'],
|
$this->items['get'],
|
||||||
|
@ -107,6 +107,14 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setUrlParameters($parameters) {
|
||||||
|
$this->items['urlParams'] = $parameters;
|
||||||
|
$this->items['parameters'] = array_merge(
|
||||||
|
$this->items['parameters'],
|
||||||
|
$this->items['urlParams']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Countable method.
|
// Countable method.
|
||||||
public function count() {
|
public function count() {
|
||||||
return count(array_keys($this->items['parameters']));
|
return count(array_keys($this->items['parameters']));
|
||||||
|
@ -207,8 +215,8 @@ class Request implements \ArrayAccess, \Countable, IRequest {
|
||||||
return $this->items['method'];
|
return $this->items['method'];
|
||||||
break;
|
break;
|
||||||
default;
|
default;
|
||||||
return isset($this[$name])
|
return isset($this[$name])
|
||||||
? $this[$name]
|
? $this[$name]
|
||||||
: null;
|
: null;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,4 +214,21 @@ class RequestTest extends \Test\TestCase {
|
||||||
$this->fail('Expected LogicException.');
|
$this->fail('Expected LogicException.');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testSetUrlParameters() {
|
||||||
|
$vars = array(
|
||||||
|
'post' => array(),
|
||||||
|
'method' => 'POST',
|
||||||
|
'urlParams' => array('id' => '2'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$request = new Request($vars, $this->stream);
|
||||||
|
|
||||||
|
$newParams = array('id' => '3', 'test' => 'test2');
|
||||||
|
$request->setUrlParameters($newParams);
|
||||||
|
$this->assertEquals('test2', $request->getParam('test'));
|
||||||
|
$this->assertEquals('3', $request->getParam('id'));
|
||||||
|
$this->assertEquals('3', $request->getParams()['id']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue