/** * 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; }