php Silex-ControllerCollection类(方法)实例源码

下面列出了php Silex-ControllerCollection 类(方法)源码代码实例,从而了解它的用法。

作者:nmarian    项目:aperoph   
public function connect(Application $app)
 {
     $controllers = new ControllerCollection();
     // *******
     // ** Signup member
     // *******
     $controllers->get('signup.html', function () use($app) {
         $form = $app['form.factory']->create(new \Aperophp\Form\Signup());
         return $app['twig']->render('member/signup.html.twig', array('form' => $form->createView()));
     })->bind('_signupmember');
     // *******
     // *******
     // ** Create member
     // *******
     $controllers->post('create.html', function (Request $request) use($app) {
         $form = $app['form.factory']->create(new \Aperophp\Form\Signup());
         $form->bindRequest($request);
         if ($form->isValid()) {
             $data = $form->getData();
             // TODO save member in database.
             var_dump($data);
             die;
         }
         return $app['twig']->render('member/signup.html.twig', array('form' => $form->createView()));
     })->bind('_createmember');
     // *******
     return $controllers;
 }

作者:d-m    项目:bol   
protected function addRoutes(ControllerCollection $c)
 {
     $c->get('/changelog', 'changeOverview')->bind('changelog');
     $c->get('/changelog/{contenttype}/{contentid}/{id}', 'changeRecord')->assert('id', '\\d*')->bind('changelogrecordsingle');
     $c->get('/changelog/{contenttype}/{contentid}', 'changeRecordListing')->value('contentid', '0')->value('contenttype', '')->bind('changelogrecordall');
     $c->get('/systemlog', 'systemOverview')->bind('systemlog');
 }

作者:nuffe    项目:bol   
protected function addRoutes(ControllerCollection $c)
 {
     $c->get('/login', 'getLogin')->bind('login');
     $c->post('/login', 'postLogin')->bind('postLogin');
     $c->match('/logout', 'logout')->bind('logout');
     $c->get('/resetpassword', 'resetPassword')->bind('resetpassword');
 }

作者:jbinf    项目:supervisoru   
public function connect(Application $app)
 {
     $controllers = new ControllerCollection();
     $supervisor = new API();
     $servers = (include __DIR__ . '/../../config.php');
     foreach (array_keys($servers) as $server_id) {
         $servers[$server_id]['id'] = $server_id;
     }
     $controllers->get('/list.{_format}', function ($_format) use($supervisor, $app, $servers) {
         if ($_format == 'json') {
             return $app->json($servers);
         } else {
             // use a closure to avoid leaking any vars into the template that we don't explicitly want
             return call_user_func(function () use($app) {
                 $url_root = $app['url_generator']->generate('home');
                 ob_start();
                 ob_implicit_flush(false);
                 include __DIR__ . '/../../views/supervisorui.html.php';
                 return ob_get_clean();
             });
         }
     })->bind('server_list')->value('_format', 'html');
     $controllers->get('/details/{server_id}', function ($server_id) use($supervisor, $app, $servers) {
         $server_ip = $servers[$server_id]['ip'];
         $details = array_merge(array('version' => $supervisor->getSupervisorVersion('127.0.0.1'), 'pid' => $supervisor->getPID('127.0.0.1')), $supervisor->getState('127.0.0.1'), $servers[$server_id]);
         return $app->json($details);
     });
     return $controllers;
 }

作者:atiard    项目:bol   
protected function addRoutes(ControllerCollection $c)
 {
     $c->method('GET|POST');
     $c->match('/editcontent/{contenttypeslug}/{id}', 'edit')->bind('editcontent')->assert('id', '\\d*')->value('id', '');
     $c->get('/overview/{contenttypeslug}', 'overview')->bind('overview');
     $c->get('/relatedto/{contenttypeslug}/{id}', 'related')->bind('relatedto')->assert('id', '\\d*');
 }

作者:emilian    项目:res   
protected function addRoutes(ControllerCollection $controllers)
 {
     $controllers->get('/tokens', array($this, 'indexAction'))->bind('user_tokens');
     $controllers->get('/tokens/new', array($this, 'newAction'))->bind('user_tokens_new');
     $controllers->post('/tokens/new', array($this, 'newAction'))->bind('user_tokens_new_process');
     $controllers->post('/tokens/{token}/delete', array($this, 'deleteAction'))->bind('user_tokens_delete');
 }

作者:rllmw    项目:forbiddenca   
protected function addRoutes(ControllerCollection $controllers)
 {
     $controllers->get('/users/new', array($this, 'newAction'))->bind('user_new');
     $controllers->post('/users/new', array($this, 'handleNewAction'))->bind('user_new_handle');
     $controllers->get('/users/choose', array($this, 'chooseAction'))->bind('user_choose');
     $controllers->get('/users/{name}', array($this, 'showAction'))->bind('user_show');
 }

作者:powerti    项目:teampass-ap   
protected function addRoutes(ControllerCollection $controllers)
 {
     $controllers->post('/key', [$this, 'create']);
     $controllers->get('/key/{id}', [$this, 'show']);
     $controllers->put('/key/{id}', [$this, 'update']);
     $controllers->delete('/key/{id}', [$this, 'delete']);
 }

作者:netcon-sourc    项目:prontotyp   
public function connect(Application $app)
 {
     $controllers = new ControllerCollection();
     $controllers->get('auth', function () use($app) {
         if ($app['session']->has($app['config']['prefix'] . 'authed-user')) {
             return $app->redirect('/');
         }
         return $app['twig']->render('PT/pages/authenticate.html', array('auth_path' => $app['uri']->generate('authenticate')));
     })->bind('authenticate');
     $controllers->post('auth', function () use($app) {
         if ($app['request']->get('username') === $app['config']['authenticate']['username'] && $app['request']->get('password') === $app['config']['authenticate']['password']) {
             $userHash = $userHash = sha1($app['config']['authenticate']['username'] . $app['config']['authenticate']['password']);
             $currentUser = $app['session']->set($app['config']['prefix'] . 'authed-user', $userHash);
             return $app->redirect('/');
         } else {
             $app['session']->setFlash('error', 'error');
             $app['session']->remove($app['config']['prefix'] . 'authed-user');
             return $app->redirect($app['uri']->generate('authenticate'));
         }
     })->bind('do_authenticate');
     $controllers->get('deauth', function ($result) use($app) {
         $app['session']->remove($app['config']['prefix'] . 'authed-user');
         return $app->redirect($app['uri']->generate('authenticate'));
     })->value('result', null)->bind('de_authenticate');
     return $controllers;
 }

作者:suniltantr    项目:teampass-ap   
protected function addRoutes(ControllerCollection $controllers)
 {
     $controllers->get('/password/generate', [$this, 'generatePassword']);
     $controllers->post('/password/generate', [$this, 'generatePassword']);
     $controllers->get('/password/complication', [$this, 'complicationPassword']);
     $controllers->get('/secret', [$this, 'secret']);
 }

作者:nlegof    项目:statm   
public function connect(Application $app)
 {
     $controllers = new ControllerCollection();
     $controllers->match('/{slug}', function (Application $app, Request $request, $username) {
         return $this->getProcessor($request)->execute()->getResponse();
     });
     return $controllers;
 }

作者:jsmith0    项目:silex-annotation-provide   
/**
  * Register the method $controllerName as controller for the given method and uri.
  *
  * @param \Silex\ControllerCollection $cc
  * @param string                      $controllerName Fully qualified method name of the controller
  * @return \Silex\Controller
  */
 public function process(ControllerCollection $cc, $controllerName)
 {
     $controller = $cc->match($this->uri, $controllerName);
     if ('MATCH' != ($method = strtoupper($this->method))) {
         // limit to configured method(s)
         $controller = $controller->method($method);
     }
     return $controller;
 }

作者:robbert-vd    项目:bol   
protected function addRoutes(ControllerCollection $c)
 {
     $c->match('/file/edit/{namespace}/{file}', 'edit')->assert('file', '.+')->assert('namespace', '[^/]+')->value('namespace', 'files')->bind('fileedit')->after(function (Request $request, Response $response) {
         if ($request->isMethod('POST')) {
             $response->headers->set('X-XSS-Protection', '0');
         }
     });
     $c->match('/files/{namespace}/{path}', 'manage')->assert('namespace', '[^/]+')->assert('path', '.*')->value('namespace', 'files')->value('path', '')->bind('files');
 }

作者:robo4    项目:Sile   
public function testConflictingRouteNames()
 {
     $controllers = new ControllerCollection();
     $mountedRootController = new Controller(new Route('/'));
     $controllers->add($mountedRootController);
     $mainRootController = new Controller(new Route('/'));
     $mainRootController->bindDefaultRouteName('main_');
     $controllers->flush();
     $this->assertNotEquals($mainRootController->getRouteName(), $mountedRootController->getRouteName());
 }

作者:johnWIll1    项目:silex-blo   
public function testMount()
 {
     $mounted = new ControllerCollection(new Route());
     $mounted->get('/{name}', function ($name) {
         return new Response($name);
     });
     $app = new Application();
     $app->mount('/hello', $mounted);
     $response = $app->handle(Request::create('/hello/Silex'));
     $this->assertEquals('Silex', $response->getContent());
 }

作者:anhnt3    项目:admin_S   
public function connect(Application $app)
 {
     $index = new ControllerCollection(new Route());
     $index->get('/', function () use($app) {
         $label = $app['models']->load('Pages', 'index');
         return $label;
     });
     $index->get('/{name}', function ($name) use($app) {
         $name = $app['models']->load('Pages', 'hello', $name);
         return "Hello {$name}";
     });
     return $index;
 }

作者:mikegibso    项目:sentien   
public function connectControllers(ControllerCollection $controllers, $prefix = null)
 {
     if ($prefix === null) {
         $prefix = static::SEPARATOR . $this->getPath();
     }
     foreach ($this->controllerCollections as $collection) {
         $controllers->mount($prefix, $collection);
     }
     foreach ($this->getChildren() as $childNode) {
         $childNode->connectControllers($controllers);
     }
     $this->getBaseNode()->connectControllers($controllers, $prefix);
 }

作者:nuffe    项目:bol   
/**
  * Verifies collection is correct type and calls connect on providers.
  *
  * Note: This is the same code as {@see Silex\Application::mount}
  *
  * @param ControllerProviderInterface|ControllerCollection $collection
  *
  * @throws LogicException If controllers is not an instance of ControllerProviderInterface or ControllerCollection
  *
  * @return ControllerCollection
  */
 protected function verifyCollection($collection)
 {
     if ($collection instanceof ControllerProviderInterface) {
         $connectedControllers = $collection->connect($this->app);
         if (!$connectedControllers instanceof ControllerCollection) {
             throw new LogicException(sprintf('The method "%s::connect" must return a "ControllerCollection" instance. Got: "%s"', get_class($collection), is_object($connectedControllers) ? get_class($connectedControllers) : gettype($connectedControllers)));
         }
         $collection = $connectedControllers;
     } elseif (!$collection instanceof ControllerCollection) {
         throw new LogicException('The "mount" method takes either a "ControllerCollection" or a "ControllerProviderInterface" instance.');
     }
     return $collection;
 }

作者:rev4    项目:revpd   
public function connect(Application $app)
 {
     $controller = new ControllerCollection($app['route_factory']);
     // Element Delete (POST)
     $controller->post('delete', function () use($app) {
         $id = $app['request']->get('elementId');
         $result = $app['repository.element']->delete(array('id' => $id));
         if ($result == 1) {
             return $app->json('OK');
         }
         return $app->json('KO');
     })->bind('route.element.delete');
     return $controller;
 }

作者:christiankadj    项目:silex-simple-annotation   
public static function connectController(ControllerCollection $ctrlsFactory, $controllerArray)
 {
     $ctrlAccessPath = $controllerArray['Namespace'] . '\\' . $controllerArray['Name'] . '::';
     $prefix = $controllerArray['Prefix'];
     foreach ($controllerArray['Actions'] as $_action) {
         $method = Annots\Method::forUsage($_action['Method']);
         $route = $prefix . $_action['Route'];
         $action = $_action['Name'];
         $binded = Annots\Bind::forUsage($_action['Bind'], $prefix, $_action['Name']);
         /** @var Controller $routeFactored */
         $routeFactored = $ctrlsFactory->match($route, $ctrlAccessPath . $action)->bind($binded)->method($method);
         // TODO : proposer le assert en annot
         //if (strpos($route, '{id}') !== false)
         //    $routeFactored->assert('id', "\d+");
     }
 }


问题


面经


文章

微信
公众号

扫码关注公众号