Maybe:
Create ControllerResolver.php somewhere in your project and put this inside:
namespace MyProject; use Silex\ControllerResolver as BaseControllerResolver; class ControllerResolver extends BaseControllerResolver { protected function instantiateController($class) { return new $class($this->app); } }
Then register it in your application (up to $app->run(); ):
$app['resolver'] = function ($app) { return new \MyProject\ControllerResolver($app, $app['logger']); };
Now you can create a basic controller for your application, for example:
namespace MyProject; use Silex\Application; use Symfony\Component\HttpFoundation\Response; abstract class BaseController { public $app; public function __construct(Application $app) { $this->app = $app; } public function getParam($key) { $postParams = $this->app['request_stack']->getCurrentRequest()->request->all(); $getParams = $this->app['request_stack']->getCurrentRequest()->query->all(); if (isset($postParams[$key])) { return $postParams[$key]; } elseif (isset($getParams[$key])) { return $getParams[$key]; } else { return null; } } public function render($view, array $parameters = array()) { $response = new Response(); return $response->setContent($this->app['twig']->render($view, $parameters)); } }
And expand it:
class HomeController extends BaseController { public function indexAction() {
Nkoyan
source share