Get value from database and insert it in a dropdown Symfony 3

Viewed 3061

Hello I try to insert data from the database into a dropdown or ChoiceType. The Data comes from two different databases.

Here is my IndexController:

public function indexAction(Request $request){
 $em = $this->getDoctrine()->getManager();
    //$city = new Cities();->select("c.id,c.active,c.code,t.text name")
 $query = $em->createQueryBuilder()
      ->select("c")
      ->from("DataBaseBundle:Countries","c")
      ->innerJoin("DataBaseBundle:Translationtext","t","WITH","c.translation=t.translation");
 $country = $query->getQuery()->getResult();
 if (!$country){
      throw $this->createNotFoundException("Country not found");
 }
 $form = $this->createForm(CountriesType::class,$country);

 if ($form->isValid()) {
    $user = $form->getData();
    $em->persist($user);
    $em->flush();
}
 return $this->render('ParametersBundle:Countries:index.html.twig', array(
            'form' => $form->createView(),));
     }
}

And my Form called CountriesType:

<?php

namespace ParametersBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;

class CountriesType extends AbstractType
{
    private $fooChoices = [
        0 => 'choice naught',
        1 => 'choice one',
        2 => 'choice deuce',
    ];
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options){
        $builder->add('active',CheckboxType::class)
        ->add('countries',TextType::class)
        ->add('countries',ChoiceType::class,['choices' => $this->fooChoices,])
        ->add('save', SubmitType::class, array('label' => 'Create Post'));
    }
    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'choices' => array(
                'm' => 'Male',
                'f' => 'Female',
            )
            //'data_class' => 'DataBaseBundle\Entity\Cities'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'country';
    }


}

The FooChoices brings data from the code and not from the database.

EDIT: And my Entity (The traslation is in another database called Traslations)

    <?php

namespace DataBaseBundle\Entity;

/**
 * Countries
 */
class Countries
{
    /**
     * @var integer
     */
private $id;

/**
 * @var integer
 */
private $active = '1';

/**
 * @var string
 */
private $code2;

/**
 * @var string
 */
private $code3;

/**
 * @var \DataBaseBundle\Entity\Continents
 */
private $continents;

/**
 * @var \DataBaseBundle\Entity\Translation
 */
private $translation;


/**
 * Get id
 *
 * @return integer
 */
public function getId()
{
    return $this->id;
}

/**
 * Set active
 *
 * @param integer $active
 *
 * @return Countries
 */
public function setActive($active)
{
    $this->active = $active;

    return $this;
}

/**
 * Get active
 *
 * @return integer
 */
public function getActive()
{
    return $this->active;
}

/**
 * Set code2
 *
 * @param string $code2
 *
 * @return Countries
 */
public function setCode2($code2)
{
    $this->code2 = $code2;

    return $this;
}

/**
 * Get code2
 *
 * @return string
 */
public function getCode2()
{
    return $this->code2;
}

/**
 * Set code3
 *
 * @param string $code3
 *
 * @return Countries
 */
public function setCode3($code3)
{
    $this->code3 = $code3;

    return $this;
}

/**
 * Get code3
 *
 * @return string
 */
public function getCode3()
{
    return $this->code3;
}

/**
 * Set continents
 *
 * @param \DataBaseBundle\Entity\Continents $continents
 *
 * @return Countries
 */
public function setContinents(\DataBaseBundle\Entity\Continents $continents = null)
{
    $this->continents = $continents;

    return $this;
}

/**
 * Get continents
 *
 * @return \DataBaseBundle\Entity\Continents
 */
public function getContinents()
{
    return $this->continents;
}

/**
 * Set translation
 *
 * @param \DataBaseBundle\Entity\Translation $translation
 *
 * @return Countries
 */
public function setTranslation(\DataBaseBundle\Entity\Translation $translation = null)
{
    $this->translation = $translation;

    return $this;
}

/**
 * Get translation
 *
 * @return \DataBaseBundle\Entity\Translation
 */
public function getTranslation()
{


       return $this->translation;
    }
}
2 Answers
Related