Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter HTML 5输入类型问题_Php_Html_Forms_Codeigniter - Fatal编程技术网

Php CodeIgniter HTML 5输入类型问题

Php CodeIgniter HTML 5输入类型问题,php,html,forms,codeigniter,Php,Html,Forms,Codeigniter,我是编程的初学者,尤其是使用CodeIgniter框架。我有个问题,也许你们能帮我 这是密码 <div class="form-group"> <?php echo form_label('Email', 'email'); echo form_input('email', '', [ 'type' => 'email', 'id' => 'email',

我是编程的初学者,尤其是使用CodeIgniter框架。我有个问题,也许你们能帮我

这是密码

<div class="form-group">
    <?php
        echo form_label('Email', 'email');
        echo form_input('email', '', [
            'type'  => 'email',
            'id'    => 'email', 
            'class' => 'form-control'
        ]);
    ?>
</div>

当我在浏览器中检查时,它显示如下

<input type="text" name="email" value="" id="email" class="form-control">

但是当我把代码改成这个的时候

<div class="form-group">
    <?php
        echo form_label('Email', 'email');
        echo form_input([
            'type'  => 'email',
            'name'  => 'email',
            'id'    => 'email', 
            'class' => 'form-control'
        ]);
    ?>
</div>

inspect元素显示

<input type="email" name="email" value="" id="email" class="form-control">

我想知道,为什么我不能在我的第一个代码中使用

任何解释都会对我有所帮助,谢谢。

我认为这是CodeIgniter框架的表单输入行为

对于方法形式输入(a、b、c)形式输入(a、b),c是额外的参数对象,是可选的。 它们只能为您创建一个文本字段,无论在外部参数中指定何种类型

但是,正如您所提到的,您仍然可以通过应用重载的form_输入来创建type=email输入,即form_输入(extraParameters)

我认为这两个在CodeIgniter中不是相同的实现,而接受数组的实现是主函数,因此它为您提供了更多的可行性

例如,您可以使用第二个代码创建第一个代码的相同输出。但你不能反过来做

<div class="form-group">
    <?php
        echo form_label('Email', 'email');
        echo form_input([
            'type'  => 'text',
            'name'  => 'email',
            'value'  => '',
            'id'    => 'email', 
            'class' => 'form-control'
        ]);
    ?>
</div>


对于第一个示例,通过输入所有参数作为值,它将默认为文本输入,假设第一个参数为名称,第二个参数为,第三个参数为额外信息


对于第二个示例,您在数组中很好地定义了它们,以生成所需的结果。

当您查看
form\u helper
时,下面的文件是
form\u input
的函数。在这里,您可以看到,当您默认情况下未传递数组数据时,它会使用
$defaults
数组,因此您不会在第一个代码中键入
电子邮件。查看以下
表单输入的代码

如果(!function_存在('form_input'))
{
/**
*文本输入字段
*
*@param混合
*@param字符串
*@param混合
*@返回字符串
*/
函数形式_输入($data='',$value='',$extra='')
{
$defaults=数组(
'类型'=>'文本',
'name'=>是_数组($data)?'':$data,
“值”=>$value
);

return'我通过在system>helpers下编辑form_helper.php并添加一个名为form_input_email()的新函数解决了这个问题,如下所示

if ( ! function_exists('form_input_email'))
{
    /**
     * Email Input Field
     *
     * @param   mixed
     * @param   string
     * @param   mixed
     * @return  string
     */
    function form_input_email($data = '', $value = '', $extra = '')
    {
        $defaults = array(
            'type' => 'email',
            'name' => is_array($data) ? '' : $data,
            'value' => $value
        );

        return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
    }
}
如果(!function_存在('form_input_email'))
{
/**
*电子邮件输入字段
*
*@param混合
*@param字符串
*@param混合
*@返回字符串
*/
函数形式\u输入\u电子邮件($data='',$value='',$extra='')
{
$defaults=数组(
'键入'=>'电子邮件',
'name'=>是_数组($data)?'':$data,
“值”=>$value
);

return“谢谢你,伙计,非常有帮助,让我了解表单输入是如何工作的。
if ( ! function_exists('form_input_email'))
{
    /**
     * Email Input Field
     *
     * @param   mixed
     * @param   string
     * @param   mixed
     * @return  string
     */
    function form_input_email($data = '', $value = '', $extra = '')
    {
        $defaults = array(
            'type' => 'email',
            'name' => is_array($data) ? '' : $data,
            'value' => $value
        );

        return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
    }
}