protected function buildFieldOptions(FcField $fc_field)
 {
     $options = parent::buildFieldOptions($fc_field);
     $params = $fc_field->getParams();
     $options['linked_field'] = FcFieldQuery::create()->findOneByName($params['linked_field']);
     return $options;
 }
 protected function getCustomColumns()
 {
     $out_columns = array();
     $setting = FcRequestSettingQuery::create()->findOneByFormId($this->getFcForm()->getId());
     if (!$setting instanceof FcRequestSetting) {
         return;
     }
     $settings = $setting->getSettings();
     if (!is_array($settings) || !isset($settings['columns']) || !is_array($settings['columns'])) {
         return;
     }
     foreach ($settings['columns'] as $fc_field_id) {
         $fc_field = FcFieldQuery::create()->findPk($fc_field_id);
         if (!$fc_field instanceof FcField) {
             continue;
         }
         $out_columns['Data_' . $fc_field->getName()] = $fc_field;
     }
     return $out_columns;
 }
 /**
  * Creates and saves a constraint
  *
  * @param Request $request
  * @param $field_id
  * @param $constraint
  * @return JsonResponse
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @throws \Symfony\Component\Security\Core\Exception\AccessDeniedException
  */
 public function doCreateConstraintAction(Request $request, $field_id, $constraint)
 {
     try {
         if (!$request->isXmlHttpRequest()) {
             throw $this->createAccessDeniedException();
         }
         $fc_field = FcFieldQuery::create()->findPk($field_id);
         if (!$fc_field instanceof FcField) {
             throw $this->createNotFoundException();
         }
         $form_action = $this->admin->generateUrl('do_create_constraint', array('id' => $fc_field->getFormId(), 'field_id' => $fc_field->getId(), 'constraint' => $constraint));
         $field_constraint = new FcFieldConstraint();
         $field_constraint->setConstraint($constraint);
         $field_constraint->setFcField($fc_field);
         $form = $this->createForm(new ConstraintCommonType($form_action, $this->container->get('fc.constraint.chain')->getParamsBuilder($constraint, $this->admin->getSubject())), $field_constraint);
         $form->handleRequest($request);
         if ($form->isValid()) {
             $field_constraint->save();
             return new JsonResponse(array('success' => true));
         }
     } catch (\Exception $e) {
         return new JsonResponse(array('success' => false, 'view' => 'Error ' . $e->getCode() . ': ' . $e->getMessage()));
     }
     return new JsonResponse(array('success' => false, 'view' => $this->renderView('FenrizbesFormConstructorBundle:SonataAdmin/FcForm:form.html.twig', array('form' => $form->createView()))));
 }
예제 #4
0
 public function postSave(PropelPDO $con = null)
 {
     if (!is_null($this->old_alias) && $this->old_alias != $this->getAlias()) {
         /** @var FcField[] $fields */
         $fields = FcFieldQuery::create()->filterByType($this->old_alias)->find();
         foreach ($fields as $field) {
             $field->setType($this->getAlias());
             $field->save();
         }
         $this->old_alias = null;
     }
 }