Пример #1
0
// Admin
$app->get('/admin', function () use($app) {
    $em = $app['orm.em'];
    $page = new Flow\Entities\Page();
    //$series = $em->find('e:Series', 1);
    $page->setPageNo(1)->setChapter($em->find('e:Chapter', 3))->setFilename('test/3/1.png');
    $em->persist($page);
    $em->flush();
    return "Yadda yadda";
});
// Page
$app->get('/{series}/{chapter}/{page}/', function (Request $request, $series, $chapter, $page) use($app) {
    $dql = 'SELECT p FROM e:Page p JOIN p.chapter c JOIN c.series s' . ' WHERE s.slug = ?1 AND c.chapter_no = ?2' . ' ORDER BY c.chapter_no DESC';
    $pageList = $app['orm.em']->createQuery($dql)->setParameter(1, $series)->setParameter(2, $chapter)->getResult(Query::HYDRATE_OBJECT);
    $pageList = new Doctrine\Common\Collections\ArrayCollection($pageList);
    $pageEntity = $pageList->matching(Criteria::create()->where(Criteria::expr()->eq('pageNo', (int) $page)))->first();
    if ($request->isXmlHttpRequest()) {
        $chapter = $pageEntity->getChapter();
        $series = $pageEntity->getChapter()->getSeries();
        $data = array('series' => array('id' => $series->getId(), 'name' => $series->getName(), 'slug' => $series->getSlug()), 'chapter' => array('id' => $chapter->getId(), 'name' => $chapter->getTitle(), 'chapterNo' => $chapter->getChapterNo(), 'date' => $chapter->getDate()), 'pages' => array());
        foreach ($pageList as $page) {
            $data['pages'][] = array('id' => $page->getId(), 'filename' => '/img/' . $page->getFilename(), 'pageNo' => $page->getPageNo(), 'height' => $page->getHeight(), 'width' => $page->getWidth());
        }
        return new Response(json_encode($data), 200, array('Cache-Control' => 'no-store'));
    }
    return $app['twig']->render('page/index.html.twig', array('page' => $pageEntity, 'pages' => $pageList, 'chapter' => $pageEntity->getChapter(), 'series' => $pageEntity->getChapter()->getSeries()));
});
// Chapter
$app->get('/{series}/{chapter}/', function ($series, $chapter) use($app) {
    $dql = 'SELECT c FROM e:Chapter c JOIN c.pages p JOIN c.series s' . ' WHERE s.slug = ?1 AND c.chapter_no = ?2' . ' ORDER BY c.chapter_no DESC';
    $chapterEntity = $app['orm.em']->createQuery($dql)->setParameter(1, $series)->setParameter(2, $chapter)->getSingleResult();