Mam typ pola wyboru o nazwie * sub_choice * w mojej formie, którego wybory będą dynamicznie ładowane przez AJAX w zależności od wybranej wartości pola wyboru nadrzędnego o nazwie * parent_choice *. Ładowanie opcji działa idealnie, ale napotykam problem podczas sprawdzania wartości sub_choice po przesłaniu. Daje on błąd sprawdzania poprawności "Ta wartość nie jest poprawna", ponieważ przesłana wartość nie znajduje się w polu wyboru podrzędnego po jej utworzeniu. Czy istnieje sposób, aby poprawnie sprawdzić poprawność przesłanej wartości pola sub_choice? Poniżej znajduje się kod do budowania mojego formularza. Używam Symfony 2.1.Sprawdzanie poprawności załadowanych dynamicznie opcji w Symfony 2
Odpowiedz
Załóżmy, że masz podrzędne prawa wyborcze? Tworzenie i pusta tablica z pewnej liczby wartości i przekazać go jako wybór
$indexedArray = []; for ($i=0; $i<999; $i++){ $indexedArray[$i]= ''; }
następnie 'choices' => $indexedArray,
:)
nie można nie budować walidacji sub_choice ponieważ podczas config jego walidator don” t wiedzieć, które wartości są prawidłowe (wartości zależą od wartości parent_choice).
To, co możesz zrobić, to rozwiązać parent_choice w encji, zanim utworzysz nowy YourFormType() w kontrolerze. Następnie możesz uzyskać wszystkie możliwe wartości dla sub_choice i podać je za pomocą konstruktora formularzy - new YourFormType ($ subChoice).
W YourFormType trzeba dodać __construct sposób podobny do tego:
/**
* @var array
*/
protected $subChoice = array();
public function __construct(array $subChoice)
{
$this->subChoice = $subChoice;
}
i używać dostarczonych wartości w postaci dodatku:
$builder->add('sub_choice', 'choice', array(
'label' => 'Sub Choice',
'choices' => $this->subChoice,
'virtual' => true
));
rade trzeba przed zastąpić pole sub_choice
przesłanie formularza:
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$parentChoice = $event->getData();
$subChoices = $this->getValidChoicesFor($parentChoice);
$event->getForm()->add('sub_choice', 'choice', [
'label' => 'Sub Choice',
'choices' => $subChoices,
]);
});
}
myślę tę odpowiedź najbardziej całkowicie i bezpośrednio daje to, czego chce pytanie: zestaw opcji jest zależny od innej wybranej wartości, bez konieczności dostarczania wszystkich opcji do sprawdzania poprawności, a następnie może później zmienić opcje. To mnie uderza jako "właściwe rozwiązanie Symfony 2". – frumious
akceptuje dowolną wartość
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$data = $event->getData();
if(is_array($data['tags']))$data=array_flip($data['tags']);
else $data = array();
$event->getForm()->add('tags', 'tag', [
'label' => 'Sub Choice',
'choices' => $data,
'mapped'=>false,
'required'=>false,
'multiple'=>true,
]);
});
- 1. Sprawdzanie poprawności JavaScriptu dla formularzy Symfony 2
- 2. Sprawdzanie poprawności wypełnionego dynamicznie pola wyboru
- 3. Sprawdzanie poprawności obiektów bez formularza w Symfony 2
- 4. Sprawdzanie poprawności sprawdzania poprawności Knockout sprawdzanie poprawności
- 5. Sprawdzanie poprawności elementów wewnątrz tablicy - Symfony 2.1
- 6. Sprawdzanie poprawności dynamicznie dodawanych pól wejściowych
- 7. Sprawdzanie poprawności AJAX Symfony2
- 8. Sprawdzanie poprawności przy włączaniu w tablicy opcji LUB zerowanie
- 9. Sprawdzanie poprawności JQuery: Sprawdzanie poprawności ukrytych pól
- 10. Walidacja równych pól w Symfony 2
- 11. sprawdzanie poprawności kątowej 2: znajdowanie sprawdzania prądu na kontrolerze
- 12. Sprawdzanie poprawności okna dialogowego
- 13. Sprawdzanie poprawności hasła FOSUserBundle
- 14. sprawdzanie poprawności django
- 15. Jak działa sprawdzanie poprawności w ASP.NET MVC 2?
- 16. Unikalne ograniczenia w Doctrine 2, Symfony 2
- 17. Sprawdzanie poprawności @ Html.Textbox w MVC4
- 18. Zatrzymaj sprawdzanie poprawności dla pierwszej flagi błędu w Symfony2?
- 19. unikalne sprawdzanie poprawności w DDD
- 20. Sprawdzanie poprawności hasła jQuery
- 21. Sprawdzanie poprawności argumentów w Ruby?
- 22. Sprawdzanie poprawności json w php
- 23. Wyłącz sprawdzanie poprawności w seeds.rb
- 24. Sprawdzanie poprawności mojego formularza
- 25. sprawdzanie poprawności schematu XML
- 26. sprawdzanie poprawności FCKeditora
- 27. Sprawdzanie poprawności pliku WADL
- 28. Sprawdzanie poprawności modelu szkieletowego
- 29. Sprawdzanie poprawności ukrytego pola
- 30. Sprawdzanie poprawności liczb dziesiętnych
Czy masz na to szczęście? utknąłem na czymś podobnym. –
Bardziej aktualne podobne pytanie jest powiązane z tym, a jedna z odpowiedzi wygląda całkiem nieźle, dotyczy użycia zdarzenia PRE_BIND w celu uporządkowania prawidłowej listy opcji: http://stackoverflow.com/questions/18207476/symfony2- dynamic-form-wybory-validation-remove – frumious
Oto wersja z dowolnej wartości zaakceptować http://stackoverflow.com/questions/28245027/symfony-2-choice-ajax-validation-fix –