radio in Form Builder Class.
I have a question about Form Builder class please.
I want to use radio button in the form builder class, how could I do that.
I try
$fields['radio'] = array('required' => TRUE, 'label' => 'Test Radio:', 'options' => array('1' => '1', '2' => '2', '3' => '3') 'type' => 'enum');
If I have 2 options, it shows as radio.
If more than 2 options, it shows as select.
My intention is to have the form_builder generate the radio code please.
Also, is it possible that I can combine the CI form_helper into form_builder?
Thank you.
Comments
With regards to combining form_helper and form_builder, I'm not sure I understand how you would want to combine them. Form_builder generates entire forms and form_helper generates single form elements and is very similar to the Form class that is used by Form_builder and comes with FUEL.
if I would like to add text field without label. How could I use form_builder to do that?
Also, when I use the 'mode' => 'enum' with above code.
$fields['radio'] = array('required' => TRUE, 'label' => 'Test Radio:', 'options' => array('1' => '1', '2' => '2', '3' => '3'), 'type' => 'enum', 'mode' => 'radios');
HTML:
<div class="field"> Test Radio: <span class="required">*</span> <input id="radio_1" type="radio" checked="checked" value="1" name="radio"> <label id="label_radio_1" for="radio_1">1</label> <input id="radio_2" type="radio" value="2" name="radio"> <label id="label_radio_2" for="radio_2">2</label> <input id="radio_3" type="radio" value="3" name="radio"> <label id="label_radio_3" for="radio_3">3</label> </div>
I would like to add p tag in the text, also for each of the radio item, or if I can add a class and id in the div like,
<div class="field my_radio"> <p>Test Radio: <span class="required">*</span></p> <div> <input id="radio_1" type="radio" checked="checked" value="1" name="radio"> <label id="label_radio_1" for="radio_1">1</label> </div> <div> <input id="radio_2" type="radio" value="2" name="radio"> <label id="label_radio_2" for="radio_2">2</label> </div> <div id="hidden_item"> <input id="radio_3" type="radio" value="3" name="radio"> <label id="label_radio_3" for="radio_3">3</label> </div> </div>
Thank you very much.
I just updated the 1.0 beta to allow you to pass a wrapper class and wrapper tag to enum field types (previously you could only do it to multi field types). If you haven't checked out the 1.0 beta, I encourage you to do so as it provides a lot more flexibility with regards to creating custom form elements (among other things):
https://github.com/daylightstudio/FUEL-CMS/tree/1.0
I am still confusing about how to pass the function into this custom field type.
Do I need to add the new function in Form_builder class?
How to set up this function to display like this simple HTML?
<div class="field my_radio"> <p>Test Radio: <span class="required">*</span></p> <div> <input id="radio_1" type="radio" checked="checked" value="1" name="radio"> <label id="label_radio_1" for="radio_1">1</label> </div> <div> <input id="radio_2" type="radio" value="2" name="radio"> <label id="label_radio_2" for="radio_2">2</label> </div> <div id="hidden_item"> <input id="radio_3" type="radio" value="3" name="radio"> <label id="label_radio_3" for="radio_3">3</label> </div> </div>
Thank you very much.
// USING A LAMBDA FUNCTION $func = create_function('$params', '.... PUT YOUR CUSTOM FUNCTION CODE HERE....'); $fields['my_custom_func'] = array('type' => 'custom', 'func' => $func); // USING a predefined function of "my_func" $fields['my_custom_func'] = array('type' => 'custom', 'func' => 'my_func'); // USING a predefined function of method on an object $fields['my_custom_func'] = array('type' => 'custom', 'func' => array($obj, 'my_method'));
In this case which files or folder I need to update?
Thank you very much for helping me understand about how the custom field work.
I would like to ask you how can I pass parameters to the custom field during render_divs()?
I see that there is
if (!empty($val['custom'])) { $str .= "<div"; if (!empty($this->row_id_prefix)) { $str .= ' id="'.$this->row_id_prefix.Form::create_id($val['name']).'"'; } $str .= " class=\"field\">"; $str .= $this->create_label($val, TRUE); $str .= $val['before_html'].$val['custom'].$val['after_html']; $str .= "</div>\n"; }
I use var_dump to check for this $val['custom'] and it is always not define.
I goal is to remove the label so If I can pass parameters into this array I can set the create_label($val, FALSE).
With regards to your other question try using something like the following which uses a string value instead of a function:
$fields['my_custom_func'] = array('custom' => 'MY CUSTOM HTML CODE GOES HERE');
You'll have to set the value of any form inputs in the HTML string. The form_fields method's first parameter is the $values array that will have the records values (if you are editing):
$custom_val = (!empty($values['my_custom_func'])) ? $values['my_custom_func'] : ''; $fields['my_custom_func'] = array('custom' => '<input name="my_custom_field" type="text" value"'.$custom_val.'"/>');