예제 #1
0
 public function testMultiMethodRoute()
 {
     $called = false;
     $router = new Router();
     $router->add('GET|PUT', 'something/{a}/{b}/{c}')->onMatch(function ($b, $c, $a, $extra) use(&$called) {
         $called = true;
         $this->assertEquals('a', $a);
         $this->assertEquals('b', $b);
         $this->assertEquals('c', $c);
         $this->assertEquals('foo', $extra);
     })->extras(['extra' => 'foo']);
     $router->match(new Request('GET', 'something/a/b/c'));
     $this->assertTrue($called);
     $called = false;
     $router->match(new Request('PUT', 'something/a/b/c'));
     $this->assertTrue($called);
 }
예제 #2
0
 private function addRoutes($actions, $namedActionName, $unnamedActionName, $actionPathBase)
 {
     $unnamedAdded = false;
     foreach ($actions as $action => $method) {
         if (in_array($action, $this->unnamedActions)) {
             $initializer = $this->owner->add($method, $actionPathBase);
             if (!$unnamedAdded) {
                 $unnamedAdded = true;
                 $initializer->name($unnamedActionName);
             }
         } else {
             $initializer = $this->owner->add($method, $actionPathBase . '/' . $action)->name($action . '_' . $namedActionName);
         }
         $initializer->extras(['controller' => $this->controllerName, 'action' => $action]);
         if ($this->onMatch !== null) {
             $initializer->onMatch($this->onMatch);
         }
     }
 }