以Zend形式渲染无线电元素

I have defined a form using Zend\Form. In that, there is a radio button.

    $this->add(array(
        'name' => 'nationality_radio',
        'type' => 'Radio',
        'options' => array(
            'value_options' => array(
                'local' => 'Local',
                'expatriate' => 'Expatriate',
            ),
        )
    ));

Its value is not directly binded with database column. But it should populate correct value taken form DB and save user input back. (eg - if value of table column nationality is local it should select local in radio button)

When rendered it should display as..

enter image description here

On form load, it will a select option considering column nationality. It will contain value either local or expatriate

        <?php
        if ($candidate->nationality == 'local'){
            $local = 'checked';
        } else if ($candidate->nationality == 'local'){
            $expatriate = 'checked';
        }
        ?>

In plain HTML i can do it as below,

    <div class="profile_item list-group-item">
        <span class="item_title">Local: </span>
        <span class="item_content"><input type="radio" name="nationality" value="local" <?php echo $local ?>></span><br>
        <span class="item_title">Expatriate: </span>
        <span class="item_content"><input type="radio" name="nationality" value="expatriate" <?php echo $expatriate ?>></span>
    </div>

But since Zend form rendered using <?php echo $this->formRow($form->get('nationality_radio')); ?> I couldn't do it. It just displayed as below.

enter image description here

How can i achieve my requirement ?

For set the value, within controller method:

$form = new YourFormClass();
//are you using fieldsets? let's say no...
//if accepted value for $candidate->nationality could be only 'local' and 'expatriate',
//check the scope with your defined value_options or use an if
$form->get('nationality_radio')->setValue($candidate->nationality);

On your view use formRadio helper:

<?php echo $this->formRadio($form->get('nationality_radio'),\Zend\Form\View\Helper\FormRadio::LABEL_PREPEND);?>

Check out documentation at: http://framework.zend.com/manual/2.2/en/modules/zend.form.elements.html#radio

or check classes:

\Zend\Form\View\Helper\FormRadio

and

\Zend\Form\View\Helper\FormMultiCheckbox

Accepted values for $labelPosition are:

const LABEL_APPEND  = 'append';
const LABEL_PREPEND = 'prepend';

Try this

 <?php
            if ($candidate->nationality == 'local'){
                $LocalChecked="checked";
            } 
           else {
                $expatriateChecked ="checked";
            }
     ?> 



<div class="profile_item list-group-item">
        <span class="item_title">Local: </span>
        <span class="item_content"><input type="radio" name="nationality" value="local" <?php echo $LocalChecked ?>></span><br>
        <span class="item_title">Expatriate: </span>
        <span class="item_content"><input type="radio" name="nationality" value="expatriate" <?php echo $expatriateChecked ?>></span>
    </div>