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;博士
使用CodeIgnIterset.*
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 '';
}
}