0

I have an application that allows users to create forms and assign validation to each field (think http://www.phpform.org/ or http://wufoo.com/). I can easily get each field’s name and label from the database, as well as the array of associated validation rules.

Say, for example, I wanted to apply a blanket rule of “required” for all of the user defined forms, I would do something like this:

foreach($fields as $field)
{
    $this->form_validation->set_rules($field[‘name’], $field[‘label’], ‘required’);
} 

Now, the problem is that I need to replace “required” with a callback. In order for the callback to work, I’m going to need the field’s id (so the callback can use this id to lookup the field's associated validation rules). How do I get this id value to the callback function?

1 Answer 1

4
foreach($fields as $field)
{       
     $this->form_validation->set_rules($field[‘name’], $field[‘label’], "callback__example[$field[‘id‘]]");
}

// your callback... see ~line 589 of Form_validation library  
public function _example($str,$id)
{
  // do something to $str using $id, return bool
}
Sign up to request clarification or add additional context in comments.

1 Comment

As an aside, CI expects validation callbacks to be public methods of the controller - which means they are unfortunately addressable via url. To prevent this you can use the underscore prefix to the function name. So the callback method is 'mycallback' and it is addressed in the validation rules with the 'callback' prefix, so there is a double underscore: 'callback__mycallback'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.