コード例 #1
0
 public function testControllerWithArguments()
 {
     $collection = new RouteCollection();
     $collection->add('detail', (new Route('/detail/{id}/{slug}'))->setRequirement('id', '\\d+')->setRequirement('slug', '[a-z\\-]+')->handleWith('app.controller.default:detail'));
     $request = Request::create('/detail/5/hello-world', Request::HTTP_METHOD_POST);
     $kernel = $this->buildKernel($request, $collection);
     $kernel->boot();
     $this->assertSame('POST: hello-world-5', $this->responseEvent->getResponse()->getContent());
 }
コード例 #2
0
 public function testKernel()
 {
     $collection = new RouteCollection();
     $collection->add('home', RouteFactory::createHttpGet('/', function () {
         return new Response('Hello world');
     }));
     $kernel = $this->buildKernel(Request::create('/'), $collection);
     $kernel->boot();
     $this->assertEquals('Hello world', $this->responseEvent->getResponse()->getContent());
 }
コード例 #3
0
 public function testLogoutOnLoginController()
 {
     $request = Request::create('/logout', Request::HTTP_METHOD_GET);
     $request->getCookieBag()->set('username', 'iqbal');
     $kernel = $this->buildKernel($this->getRouteCollection(), $request);
     $kernel->boot();
     $this->assertEquals('Logout', $this->responseEvent->getResponse()->getContent());
 }
コード例 #4
0
 /**
  * Compile string handler.
  *
  * @param Route          $route
  * @param RequestContext $request
  * @param string         $handler
  *
  * @return Response|null
  *
  * @throws HttpNotFoundException
  */
 protected function compileStringHandler(Route $route, RequestContext $request, $handler)
 {
     $parts = explode(':', $handler);
     $parameters = array_map('convert_to_camel_case', array_flip((array) $request->getParameters()));
     $parameters = array_flip($parameters);
     $action = end($parts);
     $controller = $this->buildController($handler, $parts, $parameters);
     if (!method_exists($controller->getOriginalInstance(), $action . 'Action')) {
         throw new HttpNotFoundException(sprintf('Action "%sAction" not found on controller "%s".', $action, get_class($controller->getOriginalInstance())));
     }
     return $this->dispatchMiddlewares($route, $request, function () use($parameters, $controller, $action) {
         if (!$this->responseEvent->hasResponse()) {
             return $controller->callMethod($action . 'Action', $parameters);
         }
         return $this->responseEvent->getResponse();
     }, $action);
 }