mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
implementation of customFieldBundle
This commit is contained in:
parent
2254acd8ee
commit
26a0b1e056
@ -36,7 +36,7 @@ class CustomFieldController extends Controller
|
|||||||
public function createAction(Request $request)
|
public function createAction(Request $request)
|
||||||
{
|
{
|
||||||
$entity = new CustomField();
|
$entity = new CustomField();
|
||||||
$form = $this->createCreateForm($entity);
|
$form = $this->createCreateForm($entity, $request->query->get('type', null));
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isValid()) {
|
if ($form->isValid()) {
|
||||||
@ -57,14 +57,15 @@ class CustomFieldController extends Controller
|
|||||||
* Creates a form to create a CustomField entity.
|
* Creates a form to create a CustomField entity.
|
||||||
*
|
*
|
||||||
* @param CustomField $entity The entity
|
* @param CustomField $entity The entity
|
||||||
*
|
* @param string
|
||||||
* @return \Symfony\Component\Form\Form The form
|
* @return \Symfony\Component\Form\Form The form
|
||||||
*/
|
*/
|
||||||
private function createCreateForm(CustomField $entity)
|
private function createCreateForm(CustomField $entity, $type)
|
||||||
{
|
{
|
||||||
$form = $this->createForm('custom_field_choice', $entity, array(
|
$form = $this->createForm('custom_field_choice', $entity, array(
|
||||||
'action' => $this->generateUrl('customfield_create'),
|
'action' => $this->generateUrl('customfield_create'),
|
||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
|
'type' => $type
|
||||||
));
|
));
|
||||||
|
|
||||||
$form->add('submit', 'submit', array('label' => 'Create'));
|
$form->add('submit', 'submit', array('label' => 'Create'));
|
||||||
@ -76,10 +77,10 @@ class CustomFieldController extends Controller
|
|||||||
* Displays a form to create a new CustomField entity.
|
* Displays a form to create a new CustomField entity.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function newAction()
|
public function newAction(Request $request)
|
||||||
{
|
{
|
||||||
$entity = new CustomField();
|
$entity = new CustomField();
|
||||||
$form = $this->createCreateForm($entity);
|
$form = $this->createCreateForm($entity, $request->query->get('type'));
|
||||||
|
|
||||||
return $this->render('CLCustomFieldsBundle:CustomField:new.html.twig', array(
|
return $this->render('CLCustomFieldsBundle:CustomField:new.html.twig', array(
|
||||||
'entity' => $entity,
|
'entity' => $entity,
|
||||||
|
@ -0,0 +1,224 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace CL\CustomFieldsBundle\Controller;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
|
|
||||||
|
use CL\CustomFieldsBundle\Entity\CustomFieldsGroup;
|
||||||
|
use CL\CustomFieldsBundle\Form\CustomFieldsGroupType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CustomFieldsGroup controller.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class CustomFieldsGroupController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lists all CustomFieldsGroup entities.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function indexAction()
|
||||||
|
{
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
$entities = $em->getRepository('CLCustomFieldsBundle:CustomFieldsGroup')->findAll();
|
||||||
|
|
||||||
|
return $this->render('CLCustomFieldsBundle:CustomFieldsGroup:index.html.twig', array(
|
||||||
|
'entities' => $entities,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Creates a new CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function createAction(Request $request)
|
||||||
|
{
|
||||||
|
$entity = new CustomFieldsGroup();
|
||||||
|
$form = $this->createCreateForm($entity);
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->isValid()) {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$em->persist($entity);
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl('customfieldsgroup_show', array('id' => $entity->getId())));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('CLCustomFieldsBundle:CustomFieldsGroup:new.html.twig', array(
|
||||||
|
'entity' => $entity,
|
||||||
|
'form' => $form->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a form to create a CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
* @param CustomFieldsGroup $entity The entity
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\Form\Form The form
|
||||||
|
*/
|
||||||
|
private function createCreateForm(CustomFieldsGroup $entity)
|
||||||
|
{
|
||||||
|
$form = $this->createForm(new CustomFieldsGroupType(), $entity, array(
|
||||||
|
'action' => $this->generateUrl('customfieldsgroup_create'),
|
||||||
|
'method' => 'POST',
|
||||||
|
));
|
||||||
|
|
||||||
|
$form->add('submit', 'submit', array('label' => 'Create'));
|
||||||
|
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a form to create a new CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function newAction()
|
||||||
|
{
|
||||||
|
$entity = new CustomFieldsGroup();
|
||||||
|
$form = $this->createCreateForm($entity);
|
||||||
|
|
||||||
|
return $this->render('CLCustomFieldsBundle:CustomFieldsGroup:new.html.twig', array(
|
||||||
|
'entity' => $entity,
|
||||||
|
'form' => $form->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds and displays a CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function showAction($id)
|
||||||
|
{
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
$entity = $em->getRepository('CLCustomFieldsBundle:CustomFieldsGroup')->find($id);
|
||||||
|
|
||||||
|
if (!$entity) {
|
||||||
|
throw $this->createNotFoundException('Unable to find CustomFieldsGroup entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$deleteForm = $this->createDeleteForm($id);
|
||||||
|
|
||||||
|
return $this->render('CLCustomFieldsBundle:CustomFieldsGroup:show.html.twig', array(
|
||||||
|
'entity' => $entity,
|
||||||
|
'delete_form' => $deleteForm->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a form to edit an existing CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function editAction($id)
|
||||||
|
{
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
$entity = $em->getRepository('CLCustomFieldsBundle:CustomFieldsGroup')->find($id);
|
||||||
|
|
||||||
|
if (!$entity) {
|
||||||
|
throw $this->createNotFoundException('Unable to find CustomFieldsGroup entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$editForm = $this->createEditForm($entity);
|
||||||
|
$deleteForm = $this->createDeleteForm($id);
|
||||||
|
|
||||||
|
return $this->render('CLCustomFieldsBundle:CustomFieldsGroup:edit.html.twig', array(
|
||||||
|
'entity' => $entity,
|
||||||
|
'edit_form' => $editForm->createView(),
|
||||||
|
'delete_form' => $deleteForm->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a form to edit a CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
* @param CustomFieldsGroup $entity The entity
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\Form\Form The form
|
||||||
|
*/
|
||||||
|
private function createEditForm(CustomFieldsGroup $entity)
|
||||||
|
{
|
||||||
|
$form = $this->createForm(new CustomFieldsGroupType(), $entity, array(
|
||||||
|
'action' => $this->generateUrl('customfieldsgroup_update', array('id' => $entity->getId())),
|
||||||
|
'method' => 'PUT',
|
||||||
|
));
|
||||||
|
|
||||||
|
$form->add('submit', 'submit', array('label' => 'Update'));
|
||||||
|
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Edits an existing CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function updateAction(Request $request, $id)
|
||||||
|
{
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
$entity = $em->getRepository('CLCustomFieldsBundle:CustomFieldsGroup')->find($id);
|
||||||
|
|
||||||
|
if (!$entity) {
|
||||||
|
throw $this->createNotFoundException('Unable to find CustomFieldsGroup entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$deleteForm = $this->createDeleteForm($id);
|
||||||
|
$editForm = $this->createEditForm($entity);
|
||||||
|
$editForm->handleRequest($request);
|
||||||
|
|
||||||
|
if ($editForm->isValid()) {
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl('customfieldsgroup_edit', array('id' => $id)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('CLCustomFieldsBundle:CustomFieldsGroup:edit.html.twig', array(
|
||||||
|
'entity' => $entity,
|
||||||
|
'edit_form' => $editForm->createView(),
|
||||||
|
'delete_form' => $deleteForm->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Deletes a CustomFieldsGroup entity.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function deleteAction(Request $request, $id)
|
||||||
|
{
|
||||||
|
$form = $this->createDeleteForm($id);
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->isValid()) {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$entity = $em->getRepository('CLCustomFieldsBundle:CustomFieldsGroup')->find($id);
|
||||||
|
|
||||||
|
if (!$entity) {
|
||||||
|
throw $this->createNotFoundException('Unable to find CustomFieldsGroup entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$em->remove($entity);
|
||||||
|
$em->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl('customfieldsgroup'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a form to delete a CustomFieldsGroup entity by id.
|
||||||
|
*
|
||||||
|
* @param mixed $id The entity id
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\Form\Form The form
|
||||||
|
*/
|
||||||
|
private function createDeleteForm($id)
|
||||||
|
{
|
||||||
|
return $this->createFormBuilder()
|
||||||
|
->setAction($this->generateUrl('customfieldsgroup_delete', array('id' => $id)))
|
||||||
|
->setMethod('DELETE')
|
||||||
|
->add('submit', 'submit', array('label' => 'Delete'))
|
||||||
|
->getForm()
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,7 @@ use CL\CustomFieldsBundle\CustomFields\CustomFieldInterface;
|
|||||||
use CL\CustomFieldsBundle\Entity\CustomField;
|
use CL\CustomFieldsBundle\Entity\CustomField;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use CL\CustomFieldsBundle\Form\DataTransformer\CustomFieldDataTransformer;
|
||||||
use CL\CustomFieldsBundle\Form\AdressType;
|
use CL\CustomFieldsBundle\Form\AdressType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,6 +17,10 @@ use CL\CustomFieldsBundle\Form\AdressType;
|
|||||||
class CustomFieldAddress implements CustomFieldInterface
|
class CustomFieldAddress implements CustomFieldInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @var EntityManagerInterface
|
||||||
|
*/
|
||||||
public $om;
|
public $om;
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $om)
|
public function __construct(EntityManagerInterface $om)
|
||||||
@ -23,27 +28,19 @@ class CustomFieldAddress implements CustomFieldInterface
|
|||||||
$this->om = $om;
|
$this->om = $om;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildFormType(FormBuilderInterface $builder, CustomField $customField)
|
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
||||||
{
|
{
|
||||||
switch ($customField->getRelation())
|
$builder->add(
|
||||||
{
|
$builder->create('address', 'entity', array(
|
||||||
case CustomField::ONE_TO_ONE :
|
'class' => 'CLCustomFieldsBundle:Adress',
|
||||||
$builder->build(
|
'multiple' => true,
|
||||||
$builder->create($customField->getSlug(),
|
'expanded' => true
|
||||||
new AddressType()
|
)
|
||||||
|
)->addModelTransformer(new CustomFieldDataTransformer(
|
||||||
|
$this,
|
||||||
|
$customField)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
break;
|
|
||||||
case CustomField::ONE_TO_MANY :
|
|
||||||
$builder->build(
|
|
||||||
$builder->create($customField->getSlug(),
|
|
||||||
new AddressType(),
|
|
||||||
array(
|
|
||||||
'multiple' => true
|
|
||||||
))
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getName()
|
public function getName()
|
||||||
@ -56,14 +53,39 @@ class CustomFieldAddress implements CustomFieldInterface
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transformFromEntity($value, CustomField $customField)
|
public function buildOptionsForm(FormBuilderInterface $builder)
|
||||||
{
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transformToEntity($value, CustomField $customField)
|
public function deserialize($serialized, CustomField $customField)
|
||||||
{
|
{
|
||||||
|
// if ($serialized === NULL) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return $this->om->getRepository('CLCustomFieldsBundle:Adress')
|
||||||
|
// ->find($serialized);
|
||||||
|
|
||||||
|
return $this->om->getRepository('CLCustomFieldsBundle:Adress')
|
||||||
|
->findBy(array('id' => $serialized));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param \CL\CustomFieldsBundle\Entity\Adress $value
|
||||||
|
* @param CustomField $customField
|
||||||
|
* @return type
|
||||||
|
*/
|
||||||
|
public function serialize($value, CustomField $customField)
|
||||||
|
{
|
||||||
|
$arrayId = array();
|
||||||
|
|
||||||
|
foreach($value as $address) {
|
||||||
|
$arrayId[] = $address->getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $arrayId;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,21 +18,24 @@ interface CustomFieldInterface
|
|||||||
* @param \CL\CustomFieldsBundle\CustomField\CustomField $customField
|
* @param \CL\CustomFieldsBundle\CustomField\CustomField $customField
|
||||||
* @return \Symfony\Component\Form\FormTypeInterface the form type
|
* @return \Symfony\Component\Form\FormTypeInterface the form type
|
||||||
*/
|
*/
|
||||||
public function buildFormType(FormBuilderInterface $builder, CustomField $customField);
|
public function buildForm(FormBuilderInterface $builder, CustomField $customField);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* transform the value into a format that can be stored in DB
|
||||||
*
|
*
|
||||||
* @param type $value
|
* @param mixed $value
|
||||||
* @param \CL\CustomFieldsBundle\CustomField\CustomField $customField
|
* @param \CL\CustomFieldsBundle\CustomField\CustomField $customField
|
||||||
*/
|
*/
|
||||||
public function transformToEntity($value, CustomField $customField);
|
public function serialize($value, CustomField $customField);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Transform the representation of the value, stored in db, into the
|
||||||
|
* value which may be used in the process.
|
||||||
*
|
*
|
||||||
* @param type $value
|
* @param mixed $value
|
||||||
* @param \CL\CustomFieldsBundle\CustomField\CustomField $customField
|
* @param \CL\CustomFieldsBundle\CustomField\CustomField $customField
|
||||||
*/
|
*/
|
||||||
public function transformFromEntity($value, CustomField $customField);
|
public function deserialize($serialized, CustomField $customField);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -42,4 +45,13 @@ interface CustomFieldInterface
|
|||||||
public function render($value, CustomField $customField);
|
public function render($value, CustomField $customField);
|
||||||
|
|
||||||
public function getName();
|
public function getName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return a formType which allow to edit option for the custom type.
|
||||||
|
* This FormType is shown in admin
|
||||||
|
*
|
||||||
|
* @param \CL\CustomFieldsBundle\CustomField\FormBuilderInterface $builder
|
||||||
|
* @return \Symfony\Component\Form\FormTypeInterface|null the form type
|
||||||
|
*/
|
||||||
|
public function buildOptionsForm(FormBuilderInterface $builder);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ use Symfony\Component\Form\FormBuilderInterface;
|
|||||||
*/
|
*/
|
||||||
class CustomFieldText implements CustomFieldInterface
|
class CustomFieldText implements CustomFieldInterface
|
||||||
{
|
{
|
||||||
public function buildFormType(FormBuilderInterface $builder, CustomField $customField)
|
public function buildForm(FormBuilderInterface $builder, CustomField $customField)
|
||||||
{
|
{
|
||||||
$builder->add($customField->getSlug(), 'text', array(
|
$builder->add($customField->getSlug(), 'text', array(
|
||||||
'label' => $customField->getLabel()
|
'label' => $customField->getLabel()
|
||||||
@ -27,14 +27,14 @@ class CustomFieldText implements CustomFieldInterface
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transformFromEntity($value, CustomField $customField)
|
public function serialize($value, CustomField $customField)
|
||||||
{
|
{
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transformToEntity($value, CustomField $customField)
|
public function deserialize($serialized, CustomField $customField)
|
||||||
{
|
{
|
||||||
return $value;
|
return $serialized;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getName()
|
public function getName()
|
||||||
@ -42,4 +42,8 @@ class CustomFieldText implements CustomFieldInterface
|
|||||||
return 'text field';
|
return 'text field';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function buildOptionsForm(FormBuilderInterface $builder)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,4 +57,3 @@ class Adress
|
|||||||
return $this->data;
|
return $this->data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,4 +159,3 @@ class BlopEntity
|
|||||||
var_dump($customFieldArray);
|
var_dump($customFieldArray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,4 +245,3 @@ class BlopEntity2
|
|||||||
return $this->customFieldData;
|
return $this->customFieldData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,8 +29,22 @@ class CustomField
|
|||||||
*/
|
*/
|
||||||
private $active;
|
private $active;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
private $options = array();
|
private $options = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var float
|
||||||
|
*/
|
||||||
|
private $order;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @var int
|
* @var int
|
||||||
@ -40,6 +54,10 @@ class CustomField
|
|||||||
const ONE_TO_ONE = 1;
|
const ONE_TO_ONE = 1;
|
||||||
const ONE_TO_MANY = 2;
|
const ONE_TO_MANY = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var CustomFieldsGroup
|
||||||
|
*/
|
||||||
|
private $customFieldGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get id
|
* Get id
|
||||||
@ -149,5 +167,114 @@ class CustomField
|
|||||||
{
|
{
|
||||||
return $this->active;
|
return $this->active;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get customFieldGroup
|
||||||
|
*
|
||||||
|
* @return CustomFieldsGroup
|
||||||
|
*/
|
||||||
|
public function getCustomFieldsGroup()
|
||||||
|
{
|
||||||
|
return $this->customFieldGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set customFieldGroup
|
||||||
|
*
|
||||||
|
* @param \CL\CustomFieldsBundle\Entity\CustomFieldsGroup $customFieldGroup
|
||||||
|
*
|
||||||
|
* @return CustomField
|
||||||
|
*/
|
||||||
|
public function setCustomFieldsGroup(\CL\CustomFieldsBundle\Entity\CustomFieldsGroup $customFieldGroup = null)
|
||||||
|
{
|
||||||
|
$this->customFieldGroup = $customFieldGroup;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set name
|
||||||
|
*
|
||||||
|
* @param array $name
|
||||||
|
*
|
||||||
|
* @return CustomField
|
||||||
|
*/
|
||||||
|
public function setName($name)
|
||||||
|
{
|
||||||
|
$this->name = $name;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get name
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set order
|
||||||
|
*
|
||||||
|
* @param float $order
|
||||||
|
*
|
||||||
|
* @return CustomField
|
||||||
|
*/
|
||||||
|
public function setOrder($order)
|
||||||
|
{
|
||||||
|
$this->order = $order;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get order
|
||||||
|
*
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getOrder()
|
||||||
|
{
|
||||||
|
return $this->order;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set options
|
||||||
|
*
|
||||||
|
* @param array $options
|
||||||
|
*
|
||||||
|
* @return CustomField
|
||||||
|
*/
|
||||||
|
public function setOptions(array $options)
|
||||||
|
{
|
||||||
|
$this->options = $options;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set customFieldGroup
|
||||||
|
*
|
||||||
|
* @param \CL\CustomFieldsBundle\Entity\CustomFieldsGroup $customFieldGroup
|
||||||
|
*
|
||||||
|
* @return CustomField
|
||||||
|
*/
|
||||||
|
public function setCustomFieldGroup(\CL\CustomFieldsBundle\Entity\CustomFieldsGroup $customFieldGroup = null)
|
||||||
|
{
|
||||||
|
$this->customFieldGroup = $customFieldGroup;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get customFieldGroup
|
||||||
|
*
|
||||||
|
* @return \CL\CustomFieldsBundle\Entity\CustomFieldsGroup
|
||||||
|
*/
|
||||||
|
public function getCustomFieldGroup()
|
||||||
|
{
|
||||||
|
return $this->customFieldGroup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
146
src/CL/CustomFieldsBundle/Entity/CustomFieldsGroup.php
Normal file
146
src/CL/CustomFieldsBundle/Entity/CustomFieldsGroup.php
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace CL\CustomFieldsBundle\Entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CustomFieldGroup
|
||||||
|
*/
|
||||||
|
class CustomFieldsGroup
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
private $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var \Doctrine\Common\Collections\Collection
|
||||||
|
*/
|
||||||
|
private $customFields;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->customFields = new \Doctrine\Common\Collections\ArrayCollection();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add customField
|
||||||
|
*
|
||||||
|
* @param \CL\CustomFieldsBundle\Entity\CustomField $customField
|
||||||
|
*
|
||||||
|
* @return CustomFieldsGroup
|
||||||
|
*/
|
||||||
|
public function addCustomField(\CL\CustomFieldsBundle\Entity\CustomField $customField)
|
||||||
|
{
|
||||||
|
$this->customFields[] = $customField;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove customField
|
||||||
|
*
|
||||||
|
* @param \CL\CustomFieldsBundle\Entity\CustomField $customField
|
||||||
|
*/
|
||||||
|
public function removeCustomField(\CL\CustomFieldsBundle\Entity\CustomField $customField)
|
||||||
|
{
|
||||||
|
$this->customFields->removeElement($customField);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return \Doctrine\Common\Collections\Collection
|
||||||
|
*/
|
||||||
|
public function getCustomFields()
|
||||||
|
{
|
||||||
|
return $this->customFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get id
|
||||||
|
*
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
public function getId()
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set name
|
||||||
|
*
|
||||||
|
* @param array $name
|
||||||
|
*
|
||||||
|
* @return CustomFieldsGroup
|
||||||
|
*/
|
||||||
|
public function setName($name)
|
||||||
|
{
|
||||||
|
$this->name = $name;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get name
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getName($language = null)
|
||||||
|
{
|
||||||
|
//TODO set this in a service, PLUS twig function
|
||||||
|
if ($language) {
|
||||||
|
if (isset($this->name[$language])) {
|
||||||
|
return $this->name[$language];
|
||||||
|
} else {
|
||||||
|
foreach ($this->name as $name) {
|
||||||
|
if (!empty($name)) {
|
||||||
|
return $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set entity
|
||||||
|
*
|
||||||
|
* @param string $entity
|
||||||
|
*
|
||||||
|
* @return CustomFieldsGroup
|
||||||
|
*/
|
||||||
|
public function setEntity($entity)
|
||||||
|
{
|
||||||
|
$this->entity = $entity;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get entity
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getEntity()
|
||||||
|
{
|
||||||
|
return $this->entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -13,26 +13,28 @@ class AdressType extends AbstractType
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * @param FormBuilderInterface $builder
|
* @param FormBuilderInterface $builder
|
||||||
// * @param array $options
|
* @param array $options
|
||||||
// */
|
*/
|
||||||
// public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
// {
|
{
|
||||||
// $builder
|
$builder
|
||||||
// ->add('data')
|
->add('data', 'entity', array(
|
||||||
// ;
|
|
||||||
// }
|
))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OptionsResolverInterface $resolver
|
* @param OptionsResolverInterface $resolver
|
||||||
*/
|
*/
|
||||||
public function setDefaultOptions(OptionsResolverInterface $resolver)
|
public function setDefaultOptions(OptionsResolverInterface $resolver)
|
||||||
{
|
{
|
||||||
$resolver->setDefaults(array(
|
// $resolver->setDefaults(array(
|
||||||
'data_class' => 'CL\CustomFieldsBundle\Entity\Adress',
|
// 'data_class' => 'CL\CustomFieldsBundle\Entity\Adress',
|
||||||
'class' => 'CL\CustomFieldsBundle\Entity\Adress'
|
// 'class' => 'CL\CustomFieldsBundle\Entity\Adress'
|
||||||
));
|
// ));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getParent()
|
public function getParent()
|
||||||
|
@ -5,21 +5,23 @@ namespace CL\CustomFieldsBundle\Form;
|
|||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
||||||
use CL\CustomFieldsBundle\CustomFields\CustomFieldCompiler;
|
use CL\CustomFieldsBundle\Service\CustomFieldProvider;
|
||||||
use CL\CustomFieldsBundle\Entity\CustomField;
|
use CL\CustomFieldsBundle\Entity\CustomField;
|
||||||
|
|
||||||
class CustomFieldType extends AbstractType
|
class CustomFieldType extends AbstractType
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @var \CL\CustomFieldsBundle\CustomFields\CustomFieldCompiler
|
* @var CustomFieldProvider
|
||||||
*/
|
*/
|
||||||
private $customFieldCompiler;
|
private $customFieldProvider;
|
||||||
|
|
||||||
|
private $culture = 'fr';
|
||||||
|
|
||||||
|
|
||||||
public function __construct(CustomFieldCompiler $compiler)
|
public function __construct(CustomFieldProvider $compiler)
|
||||||
{
|
{
|
||||||
$this->customFieldCompiler = $compiler;
|
$this->customFieldProvider = $compiler;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @param FormBuilderInterface $builder
|
* @param FormBuilderInterface $builder
|
||||||
@ -30,25 +32,26 @@ class CustomFieldType extends AbstractType
|
|||||||
|
|
||||||
$customFieldsList = array();
|
$customFieldsList = array();
|
||||||
|
|
||||||
foreach ($this->customFieldCompiler->getAllFields() as $key => $field) {
|
foreach ($this->customFieldProvider->getAllFields() as $key => $field) {
|
||||||
$customFieldsList[$key] = $field->getName();
|
$customFieldsList[$key] = $field->getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
$builder
|
$builder
|
||||||
->add('label')
|
->add('label')
|
||||||
->add('type', 'choice', array(
|
|
||||||
'choices' => $customFieldsList,
|
|
||||||
'expanded' => false,
|
|
||||||
'multiple' => false
|
|
||||||
))
|
|
||||||
->add('active')
|
->add('active')
|
||||||
->add('relation', 'choice', array(
|
->add('customFieldsGroup', 'entity', array(
|
||||||
'choices' => array(
|
'class' => 'CLCustomFieldsBundle:CustomFieldsGroup',
|
||||||
CustomField::ONE_TO_ONE => 'one to one ',
|
'property' => 'name['.$this->culture.']'
|
||||||
CustomField::ONE_TO_MANY => 'one to many'
|
|
||||||
)
|
|
||||||
))
|
))
|
||||||
;
|
;
|
||||||
|
|
||||||
|
//add options field
|
||||||
|
$optionsType = $this->customFieldProvider
|
||||||
|
->getCustomFieldByType($options['type'])
|
||||||
|
->buildOptionsForm($builder);
|
||||||
|
if ($optionsType) {
|
||||||
|
$builder->add('options', $optionsType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,6 +62,7 @@ class CustomFieldType extends AbstractType
|
|||||||
$resolver->setDefaults(array(
|
$resolver->setDefaults(array(
|
||||||
'data_class' => 'CL\CustomFieldsBundle\Entity\CustomField'
|
'data_class' => 'CL\CustomFieldsBundle\Entity\CustomField'
|
||||||
));
|
));
|
||||||
|
$resolver->addAllowedTypes(array('type' => 'string'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
40
src/CL/CustomFieldsBundle/Form/CustomFieldsGroupType.php
Normal file
40
src/CL/CustomFieldsBundle/Form/CustomFieldsGroupType.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace CL\CustomFieldsBundle\Form;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
||||||
|
|
||||||
|
class CustomFieldsGroupType extends AbstractType
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param FormBuilderInterface $builder
|
||||||
|
* @param array $options
|
||||||
|
*/
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
$builder
|
||||||
|
->add('name')
|
||||||
|
->add('entity')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param OptionsResolverInterface $resolver
|
||||||
|
*/
|
||||||
|
public function setDefaultOptions(OptionsResolverInterface $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefaults(array(
|
||||||
|
'data_class' => 'CL\CustomFieldsBundle\Entity\CustomFieldsGroup'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'cl_customfieldsbundle_customfieldsgroup';
|
||||||
|
}
|
||||||
|
}
|
@ -30,13 +30,13 @@ class CustomFieldDataTransformer implements DataTransformerInterface
|
|||||||
|
|
||||||
public function reverseTransform($value)
|
public function reverseTransform($value)
|
||||||
{
|
{
|
||||||
return $this->customFieldDefinition->transformFromEntity($value,
|
return $this->customFieldDefinition->serialize($value,
|
||||||
$this->customField);
|
$this->customField);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transform($value)
|
public function transform($value)
|
||||||
{
|
{
|
||||||
return $this->customFieldDefinition->transformToEntity($value,
|
return $this->customFieldDefinition->deserialize($value,
|
||||||
$this->customField);
|
$this->customField);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ use Symfony\Component\Form\FormBuilderInterface;
|
|||||||
use CL\CustomFieldsBundle\Form\DataTransformer\JsonCustomFieldToArrayTransformer;
|
use CL\CustomFieldsBundle\Form\DataTransformer\JsonCustomFieldToArrayTransformer;
|
||||||
use Doctrine\Common\Persistence\ObjectManager;
|
use Doctrine\Common\Persistence\ObjectManager;
|
||||||
use CL\CustomFieldsBundle\Form\AdressType;
|
use CL\CustomFieldsBundle\Form\AdressType;
|
||||||
use CL\CustomFieldsBundle\CustomFields\CustomFieldCompiler;
|
use CL\CustomFieldsBundle\Service\CustomFieldProvider;
|
||||||
use CL\CustomFieldsBundle\Form\DataTransformer\CustomFieldDataTransformer;
|
use CL\CustomFieldsBundle\Form\DataTransformer\CustomFieldDataTransformer;
|
||||||
|
|
||||||
class CustomFieldType extends AbstractType
|
class CustomFieldType extends AbstractType
|
||||||
@ -36,7 +36,7 @@ class CustomFieldType extends AbstractType
|
|||||||
/**
|
/**
|
||||||
* @param ObjectManager $om
|
* @param ObjectManager $om
|
||||||
*/
|
*/
|
||||||
public function __construct(ObjectManager $om, CustomFieldCompiler $compiler)
|
public function __construct(ObjectManager $om, CustomFieldProvider $compiler)
|
||||||
{
|
{
|
||||||
$this->om = $om;
|
$this->om = $om;
|
||||||
$this->customFieldCompiler = $compiler;
|
$this->customFieldCompiler = $compiler;
|
||||||
@ -50,20 +50,19 @@ class CustomFieldType extends AbstractType
|
|||||||
|
|
||||||
foreach ($customFields as $cf) {
|
foreach ($customFields as $cf) {
|
||||||
|
|
||||||
$builder->add(
|
//$builder->add(
|
||||||
$builder->create(
|
//$builder->create(
|
||||||
$cf->getSlug(),
|
//$cf->getSlug(),
|
||||||
$this->customFieldCompiler
|
$this->customFieldCompiler
|
||||||
->getCustomFieldByType($cf->getType())
|
->getCustomFieldByType($cf->getType())
|
||||||
->buildFormType($builder, $cf),
|
->buildForm($builder, $cf);
|
||||||
array('mapped' => true)
|
/* )
|
||||||
)
|
|
||||||
->addModelTransformer(new CustomFieldDataTransformer(
|
->addModelTransformer(new CustomFieldDataTransformer(
|
||||||
$this->customFieldCompiler
|
$this->customFieldCompiler
|
||||||
->getCustomFieldByType($cf->getType()),
|
->getCustomFieldByType($cf->getType()),
|
||||||
$cf)
|
$cf)
|
||||||
)
|
)*/
|
||||||
);
|
//);
|
||||||
|
|
||||||
// if($cf->getType() === 'ManyToOne(Adress)') {
|
// if($cf->getType() === 'ManyToOne(Adress)') {
|
||||||
// $builder->add($cf->getLabel(), 'entity', array(
|
// $builder->add($cf->getLabel(), 'entity', array(
|
||||||
|
@ -8,18 +8,23 @@ CL\CustomFieldsBundle\Entity\CustomField:
|
|||||||
generator:
|
generator:
|
||||||
strategy: AUTO
|
strategy: AUTO
|
||||||
fields:
|
fields:
|
||||||
label:
|
name:
|
||||||
type: string
|
type: json_array
|
||||||
length: 255
|
|
||||||
slug:
|
slug:
|
||||||
type: string
|
type: string
|
||||||
length: 255
|
length: 255
|
||||||
type:
|
type:
|
||||||
type: string
|
type: string
|
||||||
length: 255
|
length: 255
|
||||||
relation:
|
|
||||||
type: integer
|
|
||||||
default: 1
|
|
||||||
active:
|
active:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
order:
|
||||||
|
type: float
|
||||||
|
options:
|
||||||
|
type: json_array
|
||||||
lifecycleCallbacks: { }
|
lifecycleCallbacks: { }
|
||||||
|
manyToOne:
|
||||||
|
customFieldGroup:
|
||||||
|
targetEntity: CL\CustomFieldsBundle\Entity\CustomFieldsGroup
|
||||||
|
inversedBy: customFields
|
||||||
|
#TODO: add an unique constraint slug+customFieldsGroup
|
@ -0,0 +1,19 @@
|
|||||||
|
CL\CustomFieldsBundle\Entity\CustomFieldsGroup:
|
||||||
|
type: entity
|
||||||
|
table: null
|
||||||
|
id:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
id: true
|
||||||
|
generator:
|
||||||
|
strategy: AUTO
|
||||||
|
fields:
|
||||||
|
name:
|
||||||
|
type: json_array
|
||||||
|
entity:
|
||||||
|
type: string
|
||||||
|
length: 255
|
||||||
|
oneToMany:
|
||||||
|
customFields:
|
||||||
|
targetEntity: CL\CustomFieldsBundle\Entity\CustomField
|
||||||
|
mappedBy: customFieldGroup
|
@ -1,3 +1,7 @@
|
|||||||
|
cl_custom_fields_customfieldsgroup:
|
||||||
|
resource: "@CLCustomFieldsBundle/Resources/config/routing/customfieldsgroup.yml"
|
||||||
|
prefix: /customfieldsgroup
|
||||||
|
|
||||||
cl_custom_fields_blopentity2:
|
cl_custom_fields_blopentity2:
|
||||||
resource: "@CLCustomFieldsBundle/Resources/config/routing/blopentity2.yml"
|
resource: "@CLCustomFieldsBundle/Resources/config/routing/blopentity2.yml"
|
||||||
prefix: /blopentity2
|
prefix: /blopentity2
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
customfieldsgroup:
|
||||||
|
path: /
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:index" }
|
||||||
|
|
||||||
|
customfieldsgroup_show:
|
||||||
|
path: /{id}/show
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:show" }
|
||||||
|
|
||||||
|
customfieldsgroup_new:
|
||||||
|
path: /new
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:new" }
|
||||||
|
|
||||||
|
customfieldsgroup_create:
|
||||||
|
path: /create
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:create" }
|
||||||
|
requirements: { _method: post }
|
||||||
|
|
||||||
|
customfieldsgroup_edit:
|
||||||
|
path: /{id}/edit
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:edit" }
|
||||||
|
|
||||||
|
customfieldsgroup_update:
|
||||||
|
path: /{id}/update
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:update" }
|
||||||
|
requirements: { _method: post|put }
|
||||||
|
|
||||||
|
customfieldsgroup_delete:
|
||||||
|
path: /{id}/delete
|
||||||
|
defaults: { _controller: "CLCustomFieldsBundle:CustomFieldsGroup:delete" }
|
||||||
|
requirements: { _method: post|delete }
|
@ -3,7 +3,7 @@ parameters:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
chill.custom_field_compiler:
|
chill.custom_field_compiler:
|
||||||
class: CL\CustomFieldsBundle\CustomFields\CustomFieldCompiler
|
class: CL\CustomFieldsBundle\Service\CustomFieldProvider
|
||||||
call:
|
call:
|
||||||
- [setContainer, ["@service_container"]]
|
- [setContainer, ["@service_container"]]
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
{{ form_start(edit_form) }}
|
{{ form_start(edit_form) }}
|
||||||
|
|
||||||
{{ form_row(edit_form.customField.label0) }}
|
{{ form_row(edit_form.customField) }}
|
||||||
|
|
||||||
{{ form_rest(edit_form) }}
|
{{ form_rest(edit_form) }}
|
||||||
|
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
{% extends '::base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body -%}
|
||||||
|
<h1>CustomFieldsGroup edit</h1>
|
||||||
|
|
||||||
|
{{ form(edit_form) }}
|
||||||
|
|
||||||
|
<ul class="record_actions">
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup') }}">
|
||||||
|
Back to the list
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>{{ form(delete_form) }}</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
@ -0,0 +1,43 @@
|
|||||||
|
{% extends '::base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body -%}
|
||||||
|
<h1>CustomFieldsGroup list</h1>
|
||||||
|
|
||||||
|
<table class="records_list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Entity</th>
|
||||||
|
<th>Actions</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for entity in entities %}
|
||||||
|
<tr>
|
||||||
|
<td><a href="{{ path('customfieldsgroup_show', { 'id': entity.id }) }}">{{ entity.id }}</a></td>
|
||||||
|
<td>{{ entity.name['fr'] }}</td>
|
||||||
|
<td>{{ entity.entity }}</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup_show', { 'id': entity.id }) }}">show</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup_edit', { 'id': entity.id }) }}">edit</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup_new') }}">
|
||||||
|
Create a new entry
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
@ -0,0 +1,15 @@
|
|||||||
|
{% extends '::base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body -%}
|
||||||
|
<h1>CustomFieldsGroup creation</h1>
|
||||||
|
|
||||||
|
{{ form(form) }}
|
||||||
|
|
||||||
|
<ul class="record_actions">
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup') }}">
|
||||||
|
Back to the list
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
@ -0,0 +1,36 @@
|
|||||||
|
{% extends '::base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body -%}
|
||||||
|
<h1>CustomFieldsGroup</h1>
|
||||||
|
|
||||||
|
<table class="record_properties">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<td>{{ entity.id }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<td>{{ entity.name }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Entity</th>
|
||||||
|
<td>{{ entity.entity }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<ul class="record_actions">
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup') }}">
|
||||||
|
Back to the list
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('customfieldsgroup_edit', { 'id': entity.id }) }}">
|
||||||
|
Edit
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>{{ form(delete_form) }}</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace CL\CustomFieldsBundle\CustomFields;
|
namespace CL\CustomFieldsBundle\Service;
|
||||||
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
@ -11,7 +11,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
|
|||||||
*
|
*
|
||||||
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
||||||
*/
|
*/
|
||||||
class CustomFieldCompiler implements ContainerAwareInterface
|
class CustomFieldProvider implements ContainerAwareInterface
|
||||||
{
|
{
|
||||||
private $servicesByType = array();
|
private $servicesByType = array();
|
||||||
|
|
||||||
@ -43,6 +43,10 @@ class CustomFieldCompiler implements ContainerAwareInterface
|
|||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
public function setContainer(ContainerInterface $container = null)
|
||||||
{
|
{
|
||||||
|
if ($container === null) {
|
||||||
|
throw new \LogicException('container should not be null');
|
||||||
|
}
|
||||||
|
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace CL\CustomFieldsBundle\Tests\Controller;
|
||||||
|
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
class CustomFieldsGroupControllerTest extends WebTestCase
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
public function testCompleteScenario()
|
||||||
|
{
|
||||||
|
// Create a new client to browse the application
|
||||||
|
$client = static::createClient();
|
||||||
|
|
||||||
|
// Create a new entry in the database
|
||||||
|
$crawler = $client->request('GET', '/customfieldsgroup/');
|
||||||
|
$this->assertEquals(200, $client->getResponse()->getStatusCode(), "Unexpected HTTP status code for GET /customfieldsgroup/");
|
||||||
|
$crawler = $client->click($crawler->selectLink('Create a new entry')->link());
|
||||||
|
|
||||||
|
// Fill in the form and submit it
|
||||||
|
$form = $crawler->selectButton('Create')->form(array(
|
||||||
|
'cl_customfieldsbundle_customfieldsgroup[field_name]' => 'Test',
|
||||||
|
// ... other fields to fill
|
||||||
|
));
|
||||||
|
|
||||||
|
$client->submit($form);
|
||||||
|
$crawler = $client->followRedirect();
|
||||||
|
|
||||||
|
// Check data in the show view
|
||||||
|
$this->assertGreaterThan(0, $crawler->filter('td:contains("Test")')->count(), 'Missing element td:contains("Test")');
|
||||||
|
|
||||||
|
// Edit the entity
|
||||||
|
$crawler = $client->click($crawler->selectLink('Edit')->link());
|
||||||
|
|
||||||
|
$form = $crawler->selectButton('Update')->form(array(
|
||||||
|
'cl_customfieldsbundle_customfieldsgroup[field_name]' => 'Foo',
|
||||||
|
// ... other fields to fill
|
||||||
|
));
|
||||||
|
|
||||||
|
$client->submit($form);
|
||||||
|
$crawler = $client->followRedirect();
|
||||||
|
|
||||||
|
// Check the element contains an attribute with value equals "Foo"
|
||||||
|
$this->assertGreaterThan(0, $crawler->filter('[value="Foo"]')->count(), 'Missing element [value="Foo"]');
|
||||||
|
|
||||||
|
// Delete the entity
|
||||||
|
$client->submit($crawler->selectButton('Delete')->form());
|
||||||
|
$crawler = $client->followRedirect();
|
||||||
|
|
||||||
|
// Check the entity has been delete on the list
|
||||||
|
$this->assertNotRegExp('/Foo/', $client->getResponse()->getContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user