Source for file SimpleRouter.php
Documentation is available at SimpleRouter.php
6: * Copyright (c) 2004, 2009 David Grudl (http://davidgrudl.com)
8: * This source file is subject to the "Nette license" that is bundled
9: * with this package in the file license.txt.
11: * For more information please see https://nette.org
13: * @copyright Copyright (c) 2004, 2009 David Grudl
14: * @license https://nette.org/license Nette license
15: * @link https://nette.org
17: * @package Nette\Application
23: require_once dirname(__FILE__) .
'/../Object.php';
25: require_once dirname(__FILE__) .
'/../Application/IRouter.php';
30: * The bidirectional route for trivial routing via query string.
32: * @author David Grudl
33: * @copyright Copyright (c) 2004, 2009 David Grudl
34: * @package Nette\Application
53: * @param array default values
61: self::PRESENTER_KEY =>
substr($defaults, 0, $a),
65: } elseif (isset($defaults['view'])) { // back compatiblity
66: $defaults['action'] =
$defaults['view'];
67: unset($defaults['view']);
70: if (isset($defaults[self::MODULE_KEY])) {
71: $this->module =
$defaults[self::MODULE_KEY] .
':';
72: unset($defaults[self::MODULE_KEY]);
82: * Maps HTTP request to a PresenterRequest object.
83: * @param IHttpRequest
84: * @return PresenterRequest|NULL
86: public function match(IHttpRequest $httpRequest)
88: // combine with precedence: get, (post,) defaults
89: $params =
$httpRequest->getQuery();
92: if (!isset($params[self::PRESENTER_KEY])) {
96: $presenter =
$this->module .
$params[self::PRESENTER_KEY];
97: unset($params[self::PRESENTER_KEY]);
101: $httpRequest->getMethod(),
103: $httpRequest->getPost(),
104: $httpRequest->getFiles(),
105: array('secured' =>
$httpRequest->isSecured())
112: * Constructs absolute URL from PresenterRequest object.
113: * @param IHttpRequest
114: * @param PresenterRequest
115: * @return string|NULL
117: public function constructUrl(PresenterRequest $appRequest, IHttpRequest $httpRequest)
119: $params =
$appRequest->getParams();
122: $presenter =
$appRequest->getPresenterName();
129: // remove default values; NULL values are retain
131: if (isset($params[$key]) &&
$params[$key] ==
$value) { // intentionally ==
132: unset($params[$key]);
136: $uri =
$httpRequest->getUri();
137: $uri =
($this->flags & self::SECURED ?
'https://' :
'http://') .
$uri->authority .
$uri->scriptPath;
139: if ($query !=
'') { // intentionally ==
140: $uri .=
'?' .
$query;
148: * Returns default values.