Exemple #1
0
 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());
 }
 public function createSave(Application $app, Request $request, $dbTable)
 {
     $config = new Node($app, $dbTable, 'new');
     $fields = $config->getColumns();
     $pk = $config->getPrimaryKey();
     $header = $config->getHeader() ?: sprintf('Create: %s', $dbTable);
     $icon = $config->getIcon() ?: 'edit';
     $after = isset($action['after']) ? $action['after'] : '';
     $before = isset($action['before']) ? $action['before'] : '';
     /** @var \Symfony\Component\Form\Form $form */
     $form = $app['form.factory']->createBuilder('form');
     foreach ($fields as $name => $field) {
         $type = isset($field['type']) ? $field['type'] : null;
         $options = isset($field['options']) ? $field['options'] : [];
         $form->add($name, $type, $options);
     }
     $form = $form->getForm();
     $form->handleRequest($request);
     // Save if valid
     if (!$form->isValid()) {
         return $app['twig']->render($app['manager-config']['view']['new'], ['title' => $fields, 'pk' => $pk, 'header' => $header, 'icon' => $icon, 'form' => $form->createView(), 'currentTable' => $dbTable]);
     }
     $requestData = $request->request->all();
     if (isset($requestData['form']['_token'])) {
         unset($requestData['form']['_token']);
     }
     if ($before && is_callable($before)) {
         $before($requestData['form']);
     }
     foreach ($requestData['form'] as $key => $row) {
         if (isset($action['modifier'][$key])) {
             $callable = $action['modifier'][$key];
             $requestData['form'][$key] = $callable($requestData['form'][$key], $requestData['form']);
         }
     }
     $requestData['form'] = array_filter($requestData['form']);
     $query = sprintf('INSERT INTO %s(%s) VALUES(%s)', $config->getDbTable(), implode(', ', array_keys($requestData['form'])), '"' . implode('", "', array_map('addslashes', $requestData['form'])) . '"');
     if ($this->db->execute($query)) {
         if ($after && is_callable($after)) {
             $after($requestData['form']);
         }
         $app['session']->getFlashBag()->add('messageSuccess', 'Added with success');
         return $app->redirect($app['url_generator']->generate('manager-index', ['dbTable' => $dbTable]));
     }
 }