Pracuję nad formularzem używanym do wysyłania powiadomień. W formularzu mam, między innymi pola, jedno pole pliku wejściowego. W tym polu ładuję plik CSV. Z pliku CSV (zawierającego kolumnę wiadomości e-mail) wyodrębniam dane za pomocą https://code.google.com/p/jquery-csv/ i dodam je do wybranego pola tylko do odczytu z wszystkimi wybranymi opcjami.Symfony2 Forms - sposób korzystania z dynamicznych opcji wyboru
Uwaga: formularz został utworzony przy użyciu typów formularzy (w książce Symfony2) - class NotificationType extends AbstractType
; Formularz jest przesyłany za pośrednictwem AJAX;
1. Strike jeden Biorąc pod uwagę, że pole select jest dynamicznie zaludnionych, zdecydowałem nie, aby dodać go do konstruktora formy, ale wstrzyknąć go przy użyciu JavaScript.
To był zły ruch, ponieważ podczas przesyłania formularza Symfony2 potwierdza, że pola dodane w formularzu to dokładnie te, które zostały przesłane. Zwrócony błąd to: Ten formularz nie powinien zawierać dodatkowych pól.
2. Strike dwa Przechodząc od jednego uderzenia Chciałem zobaczyć, czy mogę obejść, że tak dodałem pola select w budowniczy formie, ale bez opcji, również wstrzykiwanie opcje za pośrednictwem JavaScript.
Nadal nie ma szczęścia. Symfony2 zapewnia również, że nie możesz przesłać opcji, która nie została dodana do kreatora formularzy podczas dodawania pola. Zwrócony błąd to: Ta wartość jest nieprawidłowa.
3. Strike trzy Od Strike 1 i 2, zgaduję, że jedynym sposobem, aby to dzieło byłoby dodać wszystkie możliwe opcje w konstruktora formularza w tablicy wyborów podczas dodawania pola . W ten sposób pole i opcje będą prawidłowe do przesłania.
Ale nie jest to coś, co uważam za realną opcję, szczególnie, że w polu wyboru oczekuję 10000 możliwych wyników, o których nie wiem, dopóki nie załaduję pliku CSV.
Czy możesz zaproponować inne podejście do tego?
Dzięki!
Korzystanie z dokumentacji [this] (http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-form-events-submitted-data) byłoby najlepszą opcją. Ale jesteś już prawie przy trzeciej implementacji. Zamiast dodawać wszystkie możliwe opcje, dlaczego nie można dodać tylko wybranej wartości do opcji w tablicy opcji. – xiidea