ManyToMany (Choice)

This commit is contained in:
Marc Ducobu 2014-10-10 17:39:24 +02:00
parent f148c7e566
commit f055af8228
3 changed files with 33 additions and 21 deletions

View File

@ -20,7 +20,7 @@ class Adress
public function __toString() public function __toString()
{ {
return $this->data; return $this->data . '(id:' .$this->id .')';
} }
/** /**

View File

@ -4,6 +4,7 @@ namespace CL\CustomFieldsBundle\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface; use Symfony\Component\Form\DataTransformerInterface;
use Doctrine\Common\Persistence\ObjectManager; use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Collections\ArrayCollection;
class JsonCustomFieldToArrayTransformer implements DataTransformerInterface { class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
/** /**
@ -28,20 +29,6 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
$customFieldsByLabel = array_combine($customFieldsLablels, $customFields); $customFieldsByLabel = array_combine($customFieldsLablels, $customFields);
/*
echo "<br> - 1 - <br>";
var_dump($customFields);
echo "<br> - 2 - <br>";
var_dump($customFieldsLablels);
echo "<br> - 3 - <br>";
var_dump($customFieldsByLabel);
*/
$this->customField = $customFieldsByLabel; $this->customField = $customFieldsByLabel;
} }
@ -56,13 +43,12 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
} }
/* /*
echo "<br> - 4 - <br>"; echo "<br> - 4 - <br>";
var_dump($customFieldsArray); var_dump($customFieldsArray);
echo "<br> - 5 - <br>"; echo "<br> - 5 - <br>";
¨*/ */
$customFieldsArrayRet = array(); $customFieldsArrayRet = array();
@ -81,6 +67,8 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
->getRepository('CLCustomFieldsBundle:' . $entityClass) ->getRepository('CLCustomFieldsBundle:' . $entityClass)
->findOneById($value); ->findOneById($value);
$traited = true; $traited = true;
} else if ($type === 'ManyToMany(Adress)') {
$customFieldsArrayRet[$key] = $value;
} }
} }
@ -89,7 +77,7 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
} }
} }
//var_dump($customFieldsArray); var_dump($customFieldsArrayRet);
return $customFieldsArrayRet; return $customFieldsArrayRet;
} }
@ -99,6 +87,7 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
/* /*
echo "<br> - - 7 - <br>"; echo "<br> - - 7 - <br>";
var_dump(array_keys($customFieldsArray)); var_dump(array_keys($customFieldsArray));
echo "<br> - - 8 - <br>"; echo "<br> - - 8 - <br>";
@ -108,6 +97,8 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
echo "<br> - - 9 - <br>"; echo "<br> - - 9 - <br>";
*/ */
//var_dump($customFieldsArray);
$customFieldsArrayRet = array(); $customFieldsArrayRet = array();
foreach ($customFieldsArray as $key => $value) { foreach ($customFieldsArray as $key => $value) {
@ -147,7 +138,7 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
} }
var_dump($customFieldsArrayRet); //echo json_encode($customFieldsArrayRet);
return json_encode($customFieldsArrayRet); return json_encode($customFieldsArrayRet);
} }

View File

@ -42,10 +42,31 @@ class CustomFieldType extends AbstractType
if($cf->getType() === 'ManyToOne(Adress)') { if($cf->getType() === 'ManyToOne(Adress)') {
$builder->add($cf->getLabel(), 'entity', array( $builder->add($cf->getLabel(), 'entity', array(
'class' => 'CLCustomFieldsBundle:Adress', 'class' => 'CLCustomFieldsBundle:Adress',
'property' => 'data', 'property' => 'data'
)); ));
} else if ($cf->getType() === 'ManyToOnePersist(Adress)') { } else if ($cf->getType() === 'ManyToOnePersist(Adress)') {
$builder->add($cf->getLabel(), new AdressType()); $builder->add($cf->getLabel(), new AdressType());
} else if($cf->getType() === 'ManyToMany(Adress)') {
$adress = $this->om
->getRepository('CLCustomFieldsBundle:Adress')
->findAll();
$adressId = array_map(
function($e) { return $e->getId(); },
$adress);
$adressLabel = array_map(
function($e) { return (string) $e; },
$adress);
$addressChoices = array_combine($adressId, $adressLabel);
$builder->add($cf->getLabel(), 'choice', array(
'choices' => $addressChoices,
'multiple' => true
));
} }
else { else {
$builder->add($cf->getLabel(), $cf->getType()); $builder->add($cf->getLabel(), $cf->getType());