Er det mulig å opprette egendefinerte skjemafeltegenskaper i Symfony 2?

stemmer
15

I Symfony2 skjema komponenten er det mulig å opprette egendefinerte attributter?

Grunnen til at jeg spør er fordi jeg jobber på en viss edge sak der read_only ikke vil være tilstrekkelig.

Her er scenariet: Jeg trenger å binde data basert på utfallet av en ekstern logikk analyse. Dette er avgjørende fordi jeg kan ha felt som er deaktivert som standard, men basert på den eksterne logikk feltene kan aktiveres. Jeg kan ikke bruke klientskript for å fremstille dette resultatet, må det være deaktivert i form attributtet.

Hvis jeg begynner med feltet som read_only, vil den bli deaktivert, men jeg vil aldri være i stand til å binde data til det. Så gitt utfallet av min tidligere nevnte eksterne logikk, vil jeg ikke være i stand til å bruke read_only. Så dette etterlater meg med ingen annen mulighet enn å bruke en annen egenskap som vil gjøre feltet deaktivert.

Er det mulig å lage en egendefinert attributt til produserte denne deaktivert effekt?

Publisert på 14/06/2011 klokken 17:31
kilden bruker
På andre språk...                            


3 svar

stemmer
19

Jeg er ikke sikker på at jeg har forstått spørsmålet ditt riktig; ønsker du å legge til vilkårlige attributter i skjemaet inngangs koder? For eksempel:

<input type="text" name="myInput" myAttr="myValue" />

Hvis dette er hva du ønsker å gjøre, så dette er mulig, slik:

$form = $this->createFormBuilder($someObj)
        ->add('myInput', 'text', array(
             'attr' => array('myAttr' => 'myValue')
        )
        ->getForm();

Dokumentasjonen er her:

http://symfony.com/doc/2.0/reference/forms/types/field.html

Svarte 14/12/2011 kl. 19:43
kilden bruker

stemmer
1

Vanskelig å si nøyaktig hva du er ute etter å gjøre, men høres ut som du vil ha dynamisk genererte skjemaer basert på noen hendelse, som er beskrevet her:

http://symfony.com/doc/2.0/cookbook/form/dynamic_form_generation.html

Svarte 06/01/2012 kl. 10:13
kilden bruker

stemmer
0

Din begrensningen er ikke Symfony, din begrensning er HTML og HTTP. Dessverre, når HTTP-forespørselen er oppfylt, når dataene sendes til nettleseren, er det ingenting en server kan gjøre for å endre det som er gjengitt (vel, nesten ingenting, det er alltid Skynet). Det eneste alternativet er Javascript (og det kan gjøre mye hvis de ikke kjører Lynx).

Jeg så spørsmålet på Google Grupper og basert på en kombinasjon av begge, kan jeg fortelle deg at du bare har to alternativer.

  • Du kan gjøre valget vises som en reaksjon på det første svaret du har fra nettleseren.
  • Du kan bruke Javascript og deretter håndtere eventuelle feil på serversiden.

Det beste alternativet? Jeg tror brukerne vil sette pris på muligheten Javascript. Det er god politikk å validere brukerinformasjon server-side uansett. Tydeligvis la brukeren beskjed så snart som mulig ved å validere med Javascript, men du må sjekke deres innspill på serveren uansett.

Forresten, for å deaktivere et skjemafelt i Symfony, steg-for-steg instruksjoner er her .

Svarte 02/07/2011 kl. 02:18
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more