Ich möchte ein Auswahlfeld in Symfony2 mit Werten aus einer benutzerdefinierten Abfrage füllen. Ich habe versucht, so viel wie möglich zu vereinfachen.symfony2 - Hinzufügen von Auswahlmöglichkeiten aus der Datenbank
-Controller
class PageController extends Controller
{
public function indexAction()
{
$fields = $this->get('fields');
$countries = $fields->getCountries(); // returns a array of countries e.g. array('UK', 'France', 'etc')
$routeSetup = new RouteSetup(); // this is the entity
$routeSetup->setCountries($countries); // sets the array of countries
$chooseRouteForm = $this->createForm(new ChooseRouteForm(), $routeSetup);
return $this->render('ExampleBundle:Page:index.html.twig', array(
'form' => $chooseRouteForm->createView()
));
}
}
ChooseRouteForm
class ChooseRouteForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// errors... ideally I want this to fetch the items from the $routeSetup object
$builder->add('countries', 'choice', array(
'choices' => $this->routeSetup->getCountries()
));
}
public function getName()
{
return 'choose_route';
}
}
So, wie von Symfony 2.8, ist es veraltet, in einer instanziierten Formularklasse zu übergeben. Jetzt müssen Sie stattdessen den vollständig qualifizierten Klassennamen übergeben. Was den Konstruktor überflüssig macht ... Das saugt, weil ich die Optionen nicht wie in meinem Fall vom Controller laden will, dieses Auswahlfeld wird von vielen Controllern benutzt und wäre sinnvoll zu konstruieren die Wahlmöglichkeiten in der Formularklasse, aber wie bekommt man den Doktrinmanager in die Formularklasse ohne die Optionen oder Dienste zu benutzen ...? hack hack hack, es sei denn, ich verpasse etwas, bitte sag das. – Prof83
Um ehrlich zu sein, war das noch nicht der beste Ansatz. Ich werde aktualisieren. – qooplmao
Keine Sorge, dein Beitrag war 2013 und 2.8 ist wie vor ein paar Monaten. Danke für das Update ... Ich werde jetzt damit herumspielen – Prof83