public function test_factory_called_only_on_first_request() { $config = new Config(); $config->setId('some_key'); $factory = $this->prophesize('\\RP\\DatatableBundle\\Datatable\\Factory'); $factory->create($config)->willReturn('something')->shouldBeCalledTimes(1); $registry = new Registry($factory->reveal()); $registry->addConfig($config); $registry->getDatatable('some_key'); $registry->getDatatable('some_key'); $registry->getDatatable('some_key'); }
/** * {@inheritdoc} */ public function datatable(\Twig_Environment $twig, $options) { if (!isset($options['id'])) { throw new \InvalidArgumentException('Option id is required'); } $dt = $this->datatableRegistry->getDatatable($options['id']); $config = $dt->getConfiguration(); $options['js_conf'] = json_encode($config['js']); $options['js'] = json_encode($options['js']); $options['action'] = $dt->getHasAction(); $options['action_twig'] = $dt->getHasRendererAction(); $options['fields'] = $dt->getFields(); $options['delete_form'] = $this->createDeleteForm('_id_')->createView(); $options['search'] = $dt->getSearch(); $options['search_fields'] = $dt->getSearchFields(); $options['multiple'] = $dt->getMultiple(); $options['sort'] = is_null($dt->getOrderField()) ? null : array(array_search($dt->getOrderField(), array_values($dt->getFields())), $dt->getOrderType()); $main_template = 'AliDatatableBundle:Main:index.html.twig'; if (isset($options['main_template'])) { $main_template = $options['main_template']; } return $twig->render($main_template, $options); }