Ejemplo n.º 1
0
 /**
  * Creates a form to edit a Element entity.
  *
  * @param Element $entity The entity
  *
  * @return \Symfony\Component\Form\Form The form
  */
 private function createEditForm(Element $entity)
 {
     $em = $this->getDoctrine()->getManager();
     $request = $this->container->get('request');
     $params = $request->get('_route_params');
     $block = $em->getRepository('NovuscomCMFBundle:Block')->find($params['block_id']);
     $epArray = array();
     /**
      * Пролучаем значения свойств типа "строка"
      */
     $ElementProperty = $em->getRepository('NovuscomCMFBundle:ElementProperty')->findBy(array('element' => $entity));
     // TODO Здесь можно сделать попроще и попонятней, чтобы в форму сразу попадала коллекция
     foreach ($ElementProperty as $ep) {
         $epArray[$ep->getProperty()->getId()][] = $ep->getValue();
     }
     /**
      * Получаем значения свойств типа "дата/время"
      */
     $ElementPropertyDT = $em->getRepository('NovuscomCMFBundle:ElementPropertyDT')->findBy(array('element' => $entity));
     foreach ($ElementPropertyDT as $ep) {
         $epArray[$ep->getProperty()->getId()][] = $ep->getValue();
     }
     /**
      * Получаем значения свойств типа "файл"
      */
     $ElementPropertyFile = $em->getRepository('NovuscomCMFBundle:ElementPropertyF')->findBy(array('element' => $entity));
     $ElementPropertyFileId = array();
     foreach ($ElementPropertyFile as $epf) {
         $ElementPropertyFileId[$epf->getProperty()->getId()][] = $epf->getFile()->getId();
     }
     /**
      * Устанавливаем значения для формы
      */
     $data = array('VALUES' => $epArray, 'PROPERTY_FILE_VALUES' => $ElementPropertyFileId, 'LIIP' => $this->get('liip_imagine.cache.manager'));
     $propertyForm = new ElementPropertyType($block->getProperty(), $em, $data);
     //$formProperty = new FormProperty();
     //$formProperty->setValue('value of form property');
     /*$formElement = new FormElement();
       $formElement->setName($entity->getName());
       $formElement->setCode($entity->getCode());
       $formElement->setProperties($formProperty);*/
     $action_url = $this->generateUrl('admin_element_update', array('id' => $entity->getId(), 'block_id' => $params['block_id']));
     if (array_key_exists('section_id', $params)) {
         $action_url = $this->generateUrl('admin_element_update_in_section', array('id' => $entity->getId(), 'block_id' => $params['block_id'], 'section_id' => $params['section_id']));
     }
     $form = $this->createForm(new ElementType(), $entity, array('action' => $action_url, 'method' => 'PUT', 'em' => $em, 'blockObject' => $block));
     $form->add('properties', $propertyForm, array('mapped' => false, 'label' => 'Свойства'));
     $form->add('submit', 'submit', array('label' => 'Сохранить', 'attr' => array('class' => 'btn btn-info')));
     return $form;
 }