/** * Creates an Link object based on a DB row. * * @param array $row The DB row containing Link data. * @return \WebLinks\Domain\Link */ protected function buildDomainObject($row) { $link = new Link(); $link->setId($row['link_id']); $link->setTitle($row['link_title']); $link->setUrl($row['link_url']); if (array_key_exists('user_id', $row)) { // Find and set the associated user $userId = $row['user_id']; $user = $this->userDAO->find($userId); $link->setAuthor($user); } return $link; }
/** * Submit link controller. * * @param Request $request Incoming request * @param Application $app Silex application */ public function submitLinkAction(Request $request, Application $app) { $linkFormView = null; if ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_FULLY')) { $link = new Link(); $author = $app['user']; $link->setAuthor($author); $linkForm = $app['form.factory']->create(new LinkType(), $link); $linkForm->handleRequest($request); if ($linkForm->isSubmitted() && $linkForm->isValid()) { $app['dao.link']->save($link); $app['session']->getFlashBag()->add('success', 'The link was successfully added.'); } $linkFormView = $linkForm->createView(); } return $app['twig']->render('link_form.html.twig', array('title' => 'New link', 'linkForm' => $linkFormView)); }
use WebLinks\Domain\Link; use WebLinks\Form\Type\LinkType; // Home page $app->get('/', function () use($app) { $links = $app['dao.link']->findAll(); return $app['twig']->render('index.html.twig', array('links' => $links)); }); // Submit link page $app->match('/link/submit', function (Request $request) use($app) { $valid = false; $user = $app['security']->getToken()->getUser(); $linkFormView = null; if ($app['security']->isGranted('IS_AUTHENTICATED_FULLY')) { // A user is fully authenticated : he can add links $link = new Link(); $link->setAuthor($user); $linkForm = $app['form.factory']->create(new LinkType(), $link); $linkForm->handleRequest($request); if ($linkForm->isSubmitted() && $linkForm->isValid()) { $app['dao.link']->save($link); $app['session']->getFlashBag()->add('success', 'Your link was succesfully added.'); } $linkFormView = $linkForm->createView(); } return $app['twig']->render('link_submit.html.twig', array('linkForm' => $linkFormView, 'valid' => $valid)); }); // Login form $app->get('/login', function (Request $request) use($app) { return $app['twig']->render('login.html.twig', array('error' => $app['security.last_error']($request), 'last_username' => $app['session']->get('_security.last_username'))); })->bind('login'); // named route so that path('login') works in Twig templates