Zend Modulo Radio Default Controllato

Ho il successivo gruppo di pulsanti:

$enabled = $this->createElement('radio', 'enabled')
                ->setLabel('Enabled')
                ->setMultiOptions(array('1'=>'yes', '0'=>'no'))
                ->setValue($rank_values['enabled'])
                ->setAttrib('id', 'enabled')
                ->setAttrib('class', $action . '_enabled')
                ->setSeparator('');

Come faccio a impostare una radio controllato? Ora, quando ho aperto il mio script, non ci sono radio selezionata. Selezionare “sì”. Come?

Grazie.

OriginaleL’autore Alex Pliutau | 2010-09-07

6 risposte

  1. 7

    è molto più facile 🙂

    $enabled = $this->createElement('radio', 'enabled')
                    ->setLabel('Enabled')
                    ->setMultiOptions(array('1'=>'yes', '0'=>'no'))
                    ->setValue($rank_values['enabled'])
                    ->setAttrib('id', 'enabled')
                    ->setAttrib('class', $action . '_enabled')
                    ->setSeparator('')
                    ->setValue("1");

    OriginaleL’autore

  2. 7

    Nel caso In cui qualcuno meraviglie, io sto usando la notazione degli array di dichiarare tutti i miei elementi in mio forme e zend framework 2 per avere un opzione predefinita selezionata in una radio pulsante per aggiungere l’attributo valore e che è la chiave del value_options vuoi essere selezionata per impostazione predefinita:

    //Inside your constructor or init method for your form //
    $this->add(
            [
                'type'       => 'Radio',
                'name'       => 'some_radio',
                'options'    => [
                    'value_options' => [
                        'opt1' => 'Radio option 1',
                        'opt2' => 'Radio option 2'
                    ]
                ],
                'attributes' => [
                    'value' => 'opt1' //This set the opt 1 as selected when form is rendered
                ]
            ]
        );

    Ho trovato alcuni esempi un po ‘ di confusione perché stessero usando i tasti numerici, il valore delle opzioni (0, 1), così quando ho visto il ‘valore’ => 1 non era evidente per me che questa è stata la chiave nel value_options array. Spero che questo aiuta qualcuno.

    OriginaleL’autore

  3. 3

    Uso questo:

    ->setAttrib("checked","checked")

    In modo che il vostro completo di codice simile a questo:

    $enabled = $this->createElement('radio', 'enabled')
                ->setLabel('Enabled')
                ->setMultiOptions(array('0'=>'no', '1'=>'yes'))
                ->setAttrib("checked","checked")
                ->setValue($rank_values['enabled'])
                ->setAttrib('id', 'enabled')
                ->setAttrib('class', $action . '_enabled')
                ->setSeparator('');

    [MODIFICA] Utilizzando setValue:

    In alternativa, è possibile utilizzare questo:

    ->setValue('1')

    Questo consentirà di verificare l’opzione rappresentata dal valore 1 che è yes.

    sì, funziona, ma solo se si dispone di un solo elemento. Ho 2 elementi in radio del gruppo.
    Hai provato il codice completo che mi danno ?
    Sì. Seleziona l’ultimo elemento multioptions. Seleziona no
    ecco perché ho SOSTITUITO yes e no nel mio codice completo. Vedere con attenzione.
    Penso che fare il setAttrib essere “controllato” e “controllato” è l’impostazione dell’attributo per tutti gli elementi, in modo che l’ultimo elemento, generalmente di default per la controllata risposta.

    OriginaleL’autore

  4. 3

    Secondo il manuale, si dovrebbe fare in questo modo se si dovesse utilizzare la notazione degli array: link al manuale

     $this->add(
            [
                'name'       => 'someRadioMethod',
                'type'       => 'radio',
                'options' => [
                    'label' => 'Some descriptive label',
                    'value_options' => [
                        [
                            'value' => '1',
                            'label' => 'Label for 1',
                            'selected' => true,
    
                        ],
                        [
                            'value' => '2',
                            'label' => 'Label for 2',
                            'selected' => false,
    
                        ]
                    ],
                ],
            ]
        );

    OriginaleL’autore

  5. 1

    Ho trovato che se si dispone di un set di filtri quindi ->setvalue('X') non funziona.

    Ho rimosso ->addFilter('StringToLower')

    e ha aggiunto ->setSeparator('')->setValue('N');

    Lavorato a trattare

    OriginaleL’autore

  6. 0

    Sì. Ho risolto utilizzando jQuery:

    jQuery(document).ready(function(){
        var $radios = $('input:radio[name=enabled]');
        if($radios.is(':checked') === false) {
            $radios.filter('[value=1]').attr('checked', true);
        }
    });

    OriginaleL’autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *