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()
{
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 Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Collections\ArrayCollection;
class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
/**
@ -28,20 +29,6 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
$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;
}
@ -56,13 +43,12 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
}
/*
echo "<br> - 4 - <br>";
var_dump($customFieldsArray);
echo "<br> - 5 - <br>";
¨*/
*/
$customFieldsArrayRet = array();
@ -81,6 +67,8 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
->getRepository('CLCustomFieldsBundle:' . $entityClass)
->findOneById($value);
$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;
}
@ -98,9 +86,10 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
{
/*
echo "<br> - - 7 - <br>";
var_dump(array_keys($customFieldsArray));
echo "<br> - - 8 - <br>";
var_dump(array_keys($this->customField));
@ -108,6 +97,8 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
echo "<br> - - 9 - <br>";
*/
//var_dump($customFieldsArray);
$customFieldsArrayRet = array();
foreach ($customFieldsArray as $key => $value) {
@ -147,7 +138,7 @@ class JsonCustomFieldToArrayTransformer implements DataTransformerInterface {
}
var_dump($customFieldsArrayRet);
//echo json_encode($customFieldsArrayRet);
return json_encode($customFieldsArrayRet);
}

View File

@ -42,10 +42,31 @@ class CustomFieldType extends AbstractType
if($cf->getType() === 'ManyToOne(Adress)') {
$builder->add($cf->getLabel(), 'entity', array(
'class' => 'CLCustomFieldsBundle:Adress',
'property' => 'data',
'property' => 'data'
));
} else if ($cf->getType() === 'ManyToOnePersist(Adress)') {
$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 {
$builder->add($cf->getLabel(), $cf->getType());