public function testCreateNodeWithOnlyRequiredConfigUsesTheDefaultValues() { /** @var Application|\PHPUnit_Framework_MockObject_MockObject $appMock */ $appMock = $this->getMockBuilder('Silex\\Application')->disableOriginalConstructor()->getMock(); $appMock->expects(self::any())->method('offsetExists')->with('manager-config')->will(self::returnValue(['manager' => []])); $appMock->expects(self::any())->method('offsetGet')->with('manager-config')->will(self::returnValue(['manager' => ['dummy' => ['index' => ['columns' => []]]]])); $node = new Node($appMock, 'dummy', 'index'); self::assertSame(10, $node->getItemPerPage()); self::assertSame([], $node->getColumns()); self::assertSame('dummy', $node->getDbTable()); self::assertSame('Manager: dummy', $node->getHeader()); self::assertSame('setting', $node->getIcon()); self::assertEmpty($node->getQuery()); self::assertNull($node->getSearch()); }
/** * @param Application $app * @param Request $request * @param string $dbTable * @param string $page * * @return string */ public function index(Application $app, Request $request, $dbTable, $page) { $config = new Node($app, $dbTable, 'index'); $columns = $config->getColumns(); if ($request->getQueryString() && $config->getSearch()) { foreach ($config->getSearchInputs() as $input) { $this->db->whereLike($input['name'], $request->get(str_replace('.', '_', $input['name']))); } } $total = $this->db->count($config); list($pagination, $pages) = $config->getPagination() ? $this->db->limit($total, $config->getItemPerPage(), $page) : ['', 0]; $result = $this->db->fetchByConfig($config, $pagination); foreach ($result as $key => $row) { foreach ($columns as $name => $value) { if (isset($action['modifier'][$name])) { $callable = $action['modifier'][$name]; $result[$key][$name] = $callable($result[$key]); } } } return $app['twig']->render($app['manager-config']['view']['index'], ['rows' => $result, 'title' => $columns, 'action' => $config->getAction(), 'header' => $config->getHeader(), 'icon' => $config->getIcon(), 'total' => $total, 'pages' => $pages, 'pagination' => $pagination, 'currentTable' => $dbTable, 'search' => $config->getSearch(), 'currentPage' => $page]); }