0

How to save checkbox values in database in magento ?
My code is:

$fieldset->addField('expertise', 'checkboxes', array(
    'name'      => 'expertise',
    'label'     => Mage::helper('checkout')->__('Expertise Area'),
    'required'  => true,
    'values'   =>array('Php','.Net')
));
0

2 Answers 2

1

To make it working well you need to:

1) In your Form class, before $form->setValues($data); add the following:

if (!is_array($data['expertise'])) {
    $data['expertise'] = explode(',', $data['expertise']);
}

2) In your Controller class, before $model->setData($data); add the following:

if (is_array($data['expertise'])) {
    $data['expertise'] = implode(',', $data['expertise']);
}

Moreover, input component of "checkbox" type is not standard in Magento and it works incorrectly in some cases. The best solution here is to use "multiselect" component:

$fieldset->addField(
    'expertise', 'multiselect', array(
    'name'     => 'expertise',
    'label'    => Mage::helper('checkout')->__('Expertise Area'),
    'required' => true,
    'values'   => array(
        array(
            'label' => 'Php',
            'value' => 'php'
        ),
        array(
            'label' => '.Net',
            'value' => 'dotnet'
        ),
    )
));
0

Please consider the following things.

For example:

if your attribute is expertise Then in your controller saveAction() when saving the checkbox data do

$expertise = isset($your_form_Data['expertise']) ? 1 : 0;

For Grid and Form Page

In your controller you should have Mage::register(...)->getData() or Mage::register(...)

public function editAction()
     ....
     Mage::register('example_data', $model);

On your form _prepareForm()

$model = Mage::registry('example_data'); // NOTE registry('example_data'); NOT registry('example_data')->getData();

$fieldset->addField('entire_range', 'checkbox', array(
      ....
      'checked'    => $model->getExpertise()==1 ? 'true' : 'false',
       ......
))

On your grid _prepareColumns()

$this->addColumn('expertise', array(
    ....
    'type'     => 'checkbox',
    'index'    => 'expertise',
    'values'   => array(1,2),
    'field_name' => 'checkbox_name',
    ....
));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.