Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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 set_select()辅助函数不起作用_Php_Html_Codeigniter_Select - Fatal编程技术网

Php set_select()辅助函数不起作用

Php set_select()辅助函数不起作用,php,html,codeigniter,select,Php,Html,Codeigniter,Select,我使用了以下一些代码 <select class="form-control selection" name="currency"> <option value="">select currency</option> <option value="AED"<?php echo set_select('currency', 'AED'); ?>

我使用了以下一些代码

<select class="form-control selection" name="currency">
                        <option value="">select currency</option>
                            <option value="AED"<?php echo set_select('currency', 'AED'); ?> >AED</option>
                            <option value="SAR"<?php echo set_select('currency', 'SAR'); ?> >SAR</option>
                            <option value="MAD"<?php echo set_select('currency', 'MAD'); ?> >MAD</option>
                            <option value="TRY"<?php echo set_select('currency', 'TRY'); ?> >TRY</option>
                        </select>

选择货币
>合成孔径雷达
>试一试
但不幸的是,在表单验证失败后,它没有显示所选的值。为什么这个基本的set_select()方法不起作用?我在其他一些领域也使用过这一点,所有这些工作都很好

试试这一点:

从以下位置修改表单帮助程序中的
set\u select
函数:

if (count($_POST) === 0)
{
    return ' selected="selected"';
} 


在使用
set\u value()
set\u select()
set\u checkbox()
set\u radio()
)之前,您必须将这些字段传递给验证,即使这些字段不是必需/验证的

TL;博士 使用CodeIgnIter
set.*
form helper函数时,只有两种情况:

  • 未加载
    表单验证
  • 验证对象被实例化(您正在使用
    表单\u验证
    库)
  • 为了使用
    set.*
    帮助函数,您不必使用表单验证库,但是如果您使用的是验证库,则必须为该字段设置至少一个验证规则

    长答案(集合) 对于所有的
    set.*
    form helper函数,以下是正确的。但我将尝试描述如何工作:

    语法:
    设置\u选择($field='',$value='',$default=FALSE)

    1.不使用表单验证 当您使用
    set\u select()
    函数时,CodeIgniter使用该函数来启动

    \u get\u validation\u object()

    当它返回
    FALSE
    时,
    set_select()
    函数通过
    $\u POST
    变量进行搜索,以在数组中查找指定的
    字段
    名称,在以下情况下,如
    $value
    $default
    中,它确定是否返回
    选定的
    字段
    属性/值或空字符串
    '

    因此,它可以在不使用表单验证库的情况下工作

    2.在使用表单验证时 但是,如果之前加载了验证库,则
    会将\u select()
    函数设置为该方法,并返回结果

    Form\u validation
    类中,有一个名为
    \u field\u data
    的私有属性,它是一个数组,包含所有字段的名称/值(您为其设置了验证规则的那些名称/值)

    Form\u validation::set\u select()
    方法检查
    \u field\u data
    数组中是否存在
    字段
    ,失败时返回空字符串

    \u字段\u数据
    数组验证方法

    因此,如果您使用的是验证库,您必须为
    字段
    设置至少一个验证规则,才能使
    设置_select()
    表单帮助器函数正常工作。

    这就是为什么你不能让它工作


    我希望这个答案有助于更好地理解
    set.*
    函数。

    正如他们所说,只有在验证这些字段时,codeigniter set select才会起作用。如果该字段不是必填字段,则无需重新填充权限

    是否将货币传递给表单验证?你能出示你的表单验证规则吗?@kumar_v:谢谢,伙计:)我没有给你那个货币进行验证。现在补充说。而且它也在起作用:)让我贴出来作为答案。所以这对其他人也有帮助:-)我的问题也请放弃1:)@joelcj。不要更改核心代码。这不是您问题的正确答案。
    您必须将这些字段传递给验证
    不一定。虽然这可以解决这个特定的问题,但这不是一般的规则。谢谢你,伙计:)这很有帮助
    if (count($_POST) === 0)
    {
        if ($default)
        {
            return ' selected="selected"';
        }
        else
        {
            return '';
        }
    }