/** * A route to retrieve images from the database and present * them to the user for adding to content. * * @param request object * @param app object * * @return twig template */ public function viewImagesAction(Request $request, Application $app) { $db = new DbRepository($app['dbh']); $images = $db->viewImages(); $content = $db->getAllPagesContent(); $args_array = array('user' => $app['session']->get('user'), 'images' => $images, 'content' => $content); $templateName = '_viewImages'; return $app['twig']->render($templateName . '.html.twig', $args_array); }
/** * A controller for processing the upload images form. * Validations: a jpg or png, under 1M and file must not already exist. * The image path will be stored in the db. * * @param request object * @param app object * * @return twig template */ public function processImageUploadAction(Request $request, Application $app) { $file = $request->files->get('image'); $pic = $file->getClientOriginalName(); $constraint = new Assert\Image(array('mimeTypes' => array('image/jpeg', 'image/png'), 'maxSize' => '2M')); $validfile = true; $message = ''; $errors = $app['validator']->validate($file, $constraint); if (count($errors) > 0) { foreach ($errors as $error) { $message = $error->getPropertyPath() . ' ' . $error->getMessage() . "\n"; } $validfile = false; } if (file_exists($request->getBasePath() . 'images/' . $file->getClientOriginalName())) { $message = 'Sorry, file already exists'; $validfile = false; } # if the validation variable is false, re-render the upload form with an error message if ($validfile == false) { $args_array = array('user' => $app['session']->get('user'), 'result' => $message); $templateName = '_uploadImageForm'; return $app['twig']->render($templateName . '.html.twig', $args_array); } elseif ($validfile == true) { $file->move($request->getBasePath() . 'images/', $file->getClientOriginalName()); $path = $file->getClientOriginalName(); $newImage = new Image(); $newImage->setImagePath($path); $image = $newImage->getImagePath(); $db = new DbRepository($app['dbh']); $result = $db->uploadImage($image); $images = $db->viewImages(); $content = $db->getAllPagesContent(); $args_array = array('user' => $app['session']->get('user'), 'result' => $result, 'images' => $images, 'content' => $content); $templateName = '_viewImages'; return $app['twig']->render($templateName . '.html.twig', $args_array); } }
$app['image'] = '/images/' . $config['bg-image']['image']; } # store regularly used variables(services?) in the app container $dbmanager = new DbManager(); # app['dbh'] is a connection instance and is passed to the constructor # of the database repository. $app['dbh'] = $dbmanager->getPdoInstance(); $db = new DbRepository($app['dbh']); # The $pages variable will be accessible in twig templates as app.pages. # and will (usually) be an array of page objects # so you can loop through with a twig for loop. # e.g {% for page in app.pages %}{{ page.pageName or page.pageTemplate }} # this will save having to query the database every time you want to access # the page objects. $app['pages'] = $db->getAllPages(); $app['images'] = $db->viewImages(); # twig loaders for templates: a database loader for dynamically created templates, # and a filesystem loader for templates stored on the filesystem. $app['loader1'] = new Twig_Loader_Filesystem(array($myTemplatesPath1, $myTemplatesPath2)); $app['loader2'] = new DatabaseTwigLoader($app['dbh']); $app['debug'] = true; # ______________________________________________________________ # ADD PROVIDERS HERE # ______________________________________________________________ # $app->register(new Silex\Provider\ValidatorServiceProvider()); $app->register(new Silex\Provider\UrlGeneratorServiceProvider()); $app->register(new Silex\Provider\SessionServiceProvider()); $app->register(new Silex\Provider\TwigServiceProvider(), array('twig.loader' => $app->share(function () use($app) { return new Twig_Loader_Chain(array($app['loader1'], $app['loader2'])); })));