Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- use Extensions\EntityCollection;
- use Extensions\Crud;
- use Extensions\Entity;
- use Extensions\CrudEntity;
- use Extensions\ArchiveInterface;
- $app->match('/unit/edit/{entityClass}/{id}', function ($entityClass, $id) use ($app, $_CONFIG)
- {
- $entity = Crud::createEntity($entityClass, $id);
- $form = $entity->getForm();
- $form->handleRequest($app['request']);
- if($form->isValid()) {
- $entity->populateByForm($form)->save();
- return $app->redirect(Crud::redirect($entity->getUserFriendlyUrl()));
- }
- $formTemplate = 'crud/' . $entityClass . '/form.twig';
- $formTemplate = file_exists(ROOT . '/tpl/' . $formTemplate)
- ? $formTemplate
- : 'crud/form.twig';
- return Crud::renderContainer(
- $app['twig']->render(
- $formTemplate,
- array (
- 'form' => $form->createView(),
- 'formTitle' => $entity->getFormTitle()
- )
- )
- );
- })
- ->value('id', null);
- $app->get('/unit/remove/{entityClass}/{id}', function ($entityClass, $id) use ($app, $_CONFIG)
- {
- Crud::createEntity($entityClass, $id)->remove();
- return $app->redirect(Crud::redirect('/unit/list/' . $entityClass));
- });
- foreach(CrudEntity::$registeredEntities as $entityClass)
- {
- $app->get('/' . $entityClass . 's/{page}', function ($page) use ($app, $_CONFIG, $entityClass)
- {
- $perPage = 10;
- $collection = EntityCollection::create(Crud::dashed2camel($entityClass));
- $entities = $collection->populateFromDb(
- $page,
- $perPage,
- $collection->createNewEntity()->getDefaultSearchParams(),
- array(
- 'position' => 1
- )
- )->toArray();
- $unitListTemplate = 'crud/' . $entityClass . '/list.twig';
- $listTemplate = file_exists(ROOT . '/tpl/' . $unitListTemplate)
- ? $unitListTemplate
- : 'crud/list.twig';
- $pagerLength = 5;
- $pageTotal = $collection->getPages($perPage);
- if($pagerLength < $pageTotal) {
- $pagerLength = $pageTotal;
- }
- return Crud::renderContainer(
- $app['twig']->render(
- $listTemplate,
- array (
- 'entities' => $entities,
- 'rowTemplate' => 'crud/' . $entityClass . '/row.twig',
- 'pages' => $pageTotal,
- 'current_page' => $page,
- 'entityClass' => $entityClass,
- 'pagerLength' => $pagerLength,
- 'pageTitle' => $collection->createNewEntity()->getListTitle(),
- 'tableHeader' => 'crud/' . $entityClass . '/table-header.twig'
- )
- )
- );
- })
- ->value('page', 1)
- ->assert('page', '\d+');;
- $app->get('/' . $entityClass . '/{url}', function ($url) use ($app, $_CONFIG, $entityClass)
- {
- $entity = Entity::create(Crud::dashed2camel($entityClass));
- $data = $entity->findByUrl($url);
- if(! $data) {
- $app->abort(404, 'Entity not found');
- }
- $entity->setData($data);
- return Crud::renderContainer(
- $app['twig']->render(
- 'crud/' . $entityClass . '/show.twig',
- array(
- 'entity' => $entity
- )
- ), $entity
- );
- });
- $app->get('/' . $entityClass . 's/archive/{page}', function ($page)
- use ($app, $entityClass)
- {
- $entity = Entity::create(Crud::dashed2camel($entityClass));
- if(! $entity instanceof ArchiveInterface) {
- $app->abort(500, 'Invalid archived entity');
- }
- $pagination = $entity->getArchivePagination($page);
- $entities = $pagination->getEntities($entity->getArchivedSearchCriteria());
- return Crud::renderContainer(
- $app['twig']->render(
- 'crud/' . $entityClass . '/list.twig',
- array (
- 'entities' => $entities,
- 'rowTemplate' => 'crud/' . $entityClass . '/row.twig',
- 'pages' => $pagination->getCountPages(),
- 'current_page' => $pagination->getCurrentPage(),
- 'entityClass' => $entityClass,
- 'pagerUrl' => $pagination->getUrl(),
- 'pagerLength' => $pagination->getPagerLength(),
- 'pageTitle' => $entity->getArchivePageTitle(),
- 'tableHeader' => 'crud/' . $entityClass . '/table-header.twig'
- )
- )
- );
- })
- ->value('page', 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement