stef
stef

Reputation: 27799

CakePHP creating radio buttons

How can I create two radio buttons with one being preselected based on the value of $foo? The snippet below creates them fine but does not select either of the two buttons.

$options = array('standard' => ' Standard','pro' => ' Pro');
$attributes = array(
    'legend' => false,
    'value' => false,
    'checked'=> ($foo == "pro") ? FALSE : TRUE,
);
echo $this->Form->radio('type',$options, $attributes);

Upvotes: 10

Views: 47677

Answers (4)

Invincible
Invincible

Reputation: 1460

For CakePHP 3.x, the following syntax should work.

$options = array('Y'=>'Yes','N'=>'No');

$attributes = array('div' => 'input', 'type' => 'radio', 'options' => $options, 'default' => 'Y');

echo $this->Form->input('add to business directory',$attributes);

HTH

Upvotes: 1

Thiago Belem
Thiago Belem

Reputation: 7832

It's simple.. use the default value to $foo:

$options = array(
    'standard' => 'Standard',
    'pro' => 'Pro'
);

$attributes = array(
    'legend' => false,
    'value' => $foo
);

echo $this->Form->radio('type', $options, $attributes);

As you can see on the documentation:

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::radio

Upvotes: 28

Ehtesham
Ehtesham

Reputation: 2985

This is the way to go

    $attributes = array();
    $options = array('standard' => 'Standard', 'pro' => 'Pro');

    if($foo === 'pro') {
       $attributes['default'] = 'pro';
    }

    echo $this->Form->radio('type', $options, $attributes); 

A better Solution is to set the defaults in the controller as Mark has pointed. That way you can set defaults at the end of your controller's action like...

Let's assume your Model is Member with membership_type field

   $this->data['Member']['membership_type '] = 'pro';

Upvotes: 2

mark
mark

Reputation: 21743

you should preselect the value for any form field from the controller

@see http://www.dereuromark.de/2010/06/23/working-with-forms/ "Default Values"

Upvotes: 3

Related Questions