yii\rest\UrlRule::parseRequest PHP Method

parseRequest() public method

public parseRequest ( $manager, $request )
    public function parseRequest($manager, $request)
    {
        $pathInfo = $request->getPathInfo();
        foreach ($this->rules as $urlName => $rules) {
            if (strpos($pathInfo, $urlName) !== false) {
                foreach ($rules as $rule) {
                    /* @var $rule \yii\web\UrlRule */
                    if (($result = $rule->parseRequest($manager, $request)) !== false) {
                        Yii::trace("Request parsed with URL rule: {$rule->name}", __METHOD__);
                        return $result;
                    }
                }
            }
        }
        return false;
    }

Usage Example

Example #1
0
 public function testParseRequest()
 {
     $manager = new UrlManager(['cache' => null]);
     $request = new Request(['hostInfo' => 'http://en.example.com', 'methodParam' => '_METHOD']);
     $suites = $this->getTestsForParseRequest();
     foreach ($suites as $i => $suite) {
         list($name, $config, $tests) = $suite;
         $rule = new UrlRule($config);
         foreach ($tests as $j => $test) {
             $request->pathInfo = $test[0];
             $route = $test[1];
             $params = isset($test[2]) ? $test[2] : [];
             $_POST['_METHOD'] = isset($test[3]) ? $test[3] : 'GET';
             $result = $rule->parseRequest($manager, $request);
             if ($route === false) {
                 $this->assertFalse($result, "Test#{$i}-{$j}: {$name}");
             } else {
                 $this->assertEquals([$route, $params], $result, "Test#{$i}-{$j}: {$name}");
             }
         }
     }
 }