public function testParseUrlMatchValue() { $rules = array(array('route' => 'article/read', 'pattern' => 'article/<id:\\d+>', 'scriptUrl' => '/apps/index.php', 'entries' => array(array('route' => 'article/read', 'params' => array('id' => '123', 'name1' => 'value1'), 'url' => 'article/123?name1=value1'), array('route' => 'article/read', 'params' => array('id' => 'abc', 'name1' => 'value1'), 'url' => false), array('route' => 'article/read', 'params' => array('id' => "123\n", 'name1' => 'value1'), 'url' => false), array('route' => 'article/read', 'params' => array('id' => '0x1', 'name1' => 'value1'), 'url' => false)))); $um = new CUrlManager(); foreach ($rules as $rule) { $this->app->request->baseUrl = null; // reset so that it can be determined based on scriptUrl $this->app->request->scriptUrl = $rule['scriptUrl']; $ur = new CUrlRule($rule['route'], $rule['pattern']); $ur->matchValue = true; foreach ($rule['entries'] as $entry) { $url = $ur->createUrl($um, $entry['route'], $entry['params'], '&'); $this->assertEquals($entry['url'], $url); } } }
/** * Overrides {@link CUrlRule::__construct} * Constructor. Stores the rules' new properties, then call the parent constructor. * * @since 1.0 */ public function __construct($route, $pattern) { if (is_array($route)) { if (isset($route['type'])) { $this->type = $route['type']; } if (isset($route['fields'])) { $this->fields = $route['fields']; } } parent::__construct($route, $pattern); }