Wypowiedzi
-
Temat stary, ale może się komuś przydać.
Przede wszystkim embeddedForms nie zawierają nazw klas, które dołączamy do formularza, tylko nazwy WŁASNE, pod jakimi to robimy, np.
$this->embedForm('nazwa_wlasna', klasa);
Dlatego do formularzy i18n powinniśmy się odnosić następująco:
$this->embedI18n(array('pl', 'en'));
...
$this->embeddedForms['pl']...
$this->embeddedForms['en']...
Jeśli natomiast chcemy skutecznie wywalić jakieś pole z formularza dołączanego, możemy zastosować taki oto unset:
unset(
$this->embeddedForms['en']['pole'],
$this->widgetSchema['en']['pole'],
$this->validatorSchema['en']['pole']
);
Nadgorliwych odsyłam do funkcji unsetOffset - można tam podejrzeć co jeszcze da się usunąć ;-).
Dlaczego osobno usuwamy widget i validator? Oto jest pytanie - próbowałem usuwać wyłącznie bezpośrednio powiązane pole z embeddedForms, ale mimo to ono nadal się wyświetlało. Prawdopodobnie podczas procedury podpinania podformularzy, robiona jest kopia (clone) naszego obiektu i embeddedForms oraz np. widgetSchema zawierają tak naprawdę 2 niepowiązane fizycznie ze sobą rzeczy. Tyle przynajmniej wywnioskowałem - jeśli się mylę, niech ktoś mnie poprawi.