これが私の単純化されたビューです
<?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();
ここに私のサンプルコントローラーがあります
$this->form_validation->set_rules('u_name', 'Name', 'trim|required|max_length[20]');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myview', $data);
}
予想からの偏差:
名前フィールドに入力せずにフォームを送信し、サーバー側のフォーム検証が false になった後、名前フィールドのフォーム検証エラーを予期していました。しかし、それSeverity: Notice
はArray to string conversion
PHP エラーが発生しました
重大度: 通知
メッセージ: 配列から文字列への変換
ファイル名: helpers/form_helper.php
ライン番号: 972
私のデバッグ結果:
トラブルシューティングを行った結果、自分のinput as array
フィールドがこのエラー通知の原因であることがわかりました。しかし、すべての必須フィールドに入力して送信すると、正常に機能し、input as array
フィールドは何も生成しません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;
}
それを深く見て、これに対する解決策を提案してください。
編集:
理解を深めるために、私が働いている実際のシナリオから以下のコードを見てください
<?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;
}
?>