here is my simplified view
<?php
echo form_open('form/submit');
echo form_label('User Name:*', 'u_name');
$data= array('name' => 'u_name','placeholder' => 'Your Name');
echo form_input($data);
echo form_label('User emails:', 'u_email');
$data= array('type' => 'email','name' => 'u_email[0][email]', 'placeholder' => 'Email');
echo form_input($data);
$data= array('type' => 'email','name' => 'u_email[1][email]', 'placeholder' => 'Email');
echo form_input($data);
$data = array('type' => 'submit','value'=> 'Submit','class'=> 'submit');
echo form_submit($data);
echo form_close();
and here is my sample controller
$this->form_validation->set_rules('u_name', 'Name', 'trim|required|max_length[20]');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myview', $data);
}
Deviation from Expected:
When i submit my form without filling name field and after server side form validation goes false, i was expecting form validation error for name field. But it generates a Severity: Notice
of Array to string conversion
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: helpers/form_helper.php
Line Number: 972
My Debugging Finding:
After trouble shooting i find out that my input as array
fields are causing this Error Notice. But when i submit by filling out all required fields it works fine and input as array
fields do not generate any Notice
.
form_helper.php
function _parse_form_attributes($attributes, $default)
{
if (is_array($attributes))
{
foreach ($default as $key => $val)
{
if (isset($attributes[$key]))
{
$default[$key] = $attributes[$key];
unset($attributes[$key]);
}
}
if (count($attributes) > 0)
{
$default = array_merge($default, $attributes);
}
}
$att = '';
foreach ($default as $key => $val)
{
if ($key === 'value')
{
$val = html_escape($val);
}
elseif ($key === 'name' && ! strlen($default['name']))
{
continue;
}
$att .= $key.'="'.$val.'" '; //Line Number: 972
}
return $att;
}
Please take a deep look on it and suggest me some solution for this.
Edit:
Take a look on below code from actual scenario where i am working, for better understanding
<?php
if(empty($additional_alert[0]))
{
echo '<td id ="empty">No additional alert data found.</td>';
}
else
{
foreach($additional_alert as $key=>$additional_alert):
?><div>
<?php
$data = array('placeholder'=>'Name', 'name'=>'additional_alert['.$key.'][name]', 'value'=>set_value('additional_alert', $additional_alert['name']), 'class'=>'');
echo form_input($data);
$data = array('placeholder'=>'Email', 'name'=>'additional_alert['.$key.'][email]', 'value'=>set_value('additional_alert',$additional_alert['email']), 'class'=>'');
echo form_input($data);
echo '<button type="button" name="remove" id="" class="btn btn-danger btn_removes"><i class="fa fa-trash-o"></i></button>';
?><br>
</div>
<?php
endforeach;
}
?>