/** * Render test */ public function testRenderAndToString() { $table = new Table(); $needleTableTag = sprintf('<table id="%s" class="dataTable display">', $table->getTableId()); $needleTableJsSelector = sprintf("\$('#%s').dataTable({", $table->getTableId()); $this->assertContains($needleTableTag, $table->render()); $this->assertContains($needleTableJsSelector, $table->render()); $this->assertContains($needleTableJsSelector, (string) $table); }
private function generateDatatable() { TwigHelper::addCss('file:///Admin/vendor/datatables/media/css/jquery.dataTables.min.css', 100); TwigHelper::addJs('file:///Admin/vendor/jquery/dist/jquery.min.js', 20); TwigHelper::addJs('file:///Admin/vendor/datatables/media/js/jquery.dataTables.min.js', 100); TwigHelper::addJs(' function deletePage(id) { if (confirm(\'Delete this user?\')) { $.ajax({ type: "DELETE", url: \'pages/\' + id, success: function(affectedRows) { if (affectedRows > 0) window.location = \'pages\'; } }); } }', 110); /** @var \Cake\ORM\Table $pagesTable */ $pagesTable = TableRegistry::get('Pages.Pages'); $pages = $pagesTable->find(); $table = new Table(); $col = new Column(); $col->setTitle('Title')->setData('Pages.title'); $table->addColumn($col); $col = new Column(); $col->setTitle('Slug')->setData('Pages.slug'); $table->addColumn($col); $router = $this->getRouter(); $col = new Column\Action(); $col->setManager(function (Column\ActionBuilder $action, Entity $page) use($router) { if (true) { $action->addAction('edit', 'Edit', $router->generateUrl(['pages', $page->get('slug'), 'edit'])); $action->addAction('delete', 'Delete', 'javascript:deletePage("' . $page->get('slug') . '");'); } })->setTitle('Actions'); $table->addColumn($col); $table->setDataSource(new CakePHP($pages, $this->getRequest()->getRequestTarget())); if ($this->getRequest()->isAjax()) { die($table->getResponse()); } $this->getResponder()->setData('table', $table->render()); $this->getResponder()->setData('pages', $pages); }