} } } $checkSPF = function (Request $request, MyApp $app) { if ($request->query->get('spf') === 'navigate') { // must return json-wrapped html fragments $app->isSpfRequest = true; } else { // must return the full html page $app->isSpfRequest = false; } }; $app = new MyApp(); $app['debug'] = true; // set up twig $app->register(new Silex\Provider\TwigServiceProvider(), array('twig.path' => __DIR__ . '/views')); ### ------ ### ROUTES ### ------ # INDEX $app->get('/', function () use($app) { // index is always full html return $app['twig']->render('base.twig', array('header' => $app['twig']->render('header.twig', array()), 'content' => $app['twig']->render('index.twig', array()), 'footer' => $app['twig']->render('footer.twig', array()))); }); # PHOTOS $app->get('/photos', function () use($app) { return SpfResponse::render('photos', $app['twig'], $app->isSpfRequest); })->before($checkSPF); # SINGLE PHOTO # $app->get('/photos/{id}', function () use($app) { # // return $spf->render('photo', $app);