Sto cercando di popolare una casella di scelta in symfony2 con i valori di una query personalizzata. Ho cercato di semplificare il più possibile.symfony2 - aggiunta di scelte dal database
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';
}
}
Quindi, a partire da Symfony 2.8, è deprecato passare in una classe di modulo istanziata. Ora è necessario passare il nome completo della classe. Che toglie di essere in grado di usare il costruttore ... Questo fa schifo, perché non voglio dover caricare le opzioni dal controller come nel mio caso, questo campo di scelta è usato da molti controller e avrebbe senso costruire le scelte nella classe del modulo, tuttavia, come si ottiene il doctrine manager nella classe form senza utilizzare le opzioni oi servizi ...? Hack Hack Hack, a meno che non manchi qualcosa, per favore dimmi così – Prof83
A dire il vero questo non era il miglior approccio neanche allora. Aggiornerò – qooplmao
Nessun problema, il tuo post è stato il 2013 e 2.8 è come pochi mesi fa. Grazie per l'aggiornamento ... Non riesco a giocarci adesso – Prof83