-
Notifications
You must be signed in to change notification settings - Fork 0
Validation Class
I have a small fix to make validation class more flexible.
...
<form>
<input type="text" name="search[query]">
</form>
...In this case validation class is not really helpful as we can declare as a rule just field in the first level array. What if you want to have n level array ?
TO DO:
1. Add just after :
class CI_Validation {
...new var
var $_inputdata = array();2. Replace all $_POST vars to : (ctrl+h)
$this->_inputdata3. You need to add this function into Validation library : (system/libraries/Validation.php)
function parse_rules($data)
{
if( ! is_array($data))
{
return false;
}
else
{
foreach($data as $eval_array => $rules) {
$to_eval = explode(",", $eval_array);
$this->_inputdata[$eval_array] = eval('return $_POST[\''.implode("']['", $to_eval).'\'];');
}
}
}4. in set_rules() function add one line just before foreach :
function set_rules($data, $rules = '')
{
if ( ! is_array($data))
{
if ($rules == '')
return;
$data[$data] = $rules;
}
$this->parse_rules($data); // Add this line
foreach ($data as $key => $val)
{
$this->_rules[$key] = $val;
}
}**Sample : **
...
<form>
<input type="text" name="search[query]">
</form>
... $rules['search,query'] = "required";
// You can add n level array i.e. $rules['level1,level2,level3,level4,...']
// what will be in fact $_POST['level1']['level2']['level3']['level4'][...]
$this->CI->validation->set_rules($rules);
if ($this->CI->validation->run() !== FALSE) {
echo 'OK';
}Categories
@todo - make ToC from/for directories, and reorganize
Applications [Controller] [Core] [DMZ_Extensions] [Helper] [Internationalization] [Libraries] [Libraries:Permissions] [Library] [Library:Views] [Models] [Module] [Plugin] [Views]
[Analytics] [Approaches] [Books] [Config] [Getting Started] [Help] [Help:TipsAndTricks] [IIS]
[Contributions] [Contributions - Modifications] [Groups] [Links] [Wiki]