Czekam na wypełnienie pola wyboru w symfony2 wartościami z niestandardowego zapytania. Starałem się uprościć jak najwięcej.symfony2 - dodawanie opcji z bazy danych
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';
}
}
Tak, jak z Symfony 2.8, jest przestarzałe, aby przejść w instancji klasy formularza. Teraz musisz przekazać w pełni kwalifikowaną nazwę klasy. Co oznacza, że nie można używać konstruktora ... To jest do bani, ponieważ nie chcę ładować opcji z kontrolera, tak jak w moim przypadku, to pole wyboru jest używane od WIELU kontrolerów i miałoby sens konstruować wybory w klasie formularza, jak jednak uzyskać menedżera doktryny do klasy formularza bez korzystania z opcji lub usług ...? włamać się, włamać się, chyba że czegoś mi brakuje, proszę tak powiedzieć. – Prof83
Szczerze mówiąc, to nie było najlepsze podejście. Zaktualizuję. – qooplmao
Bez obaw, Twój post był 2013, a 2.8 jest jak kilka miesięcy temu. Dzięki za aktualizację ... Teraz mogę się z nim teraz bawić – Prof83