summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source
diff options
context:
space:
mode:
Diffstat (limited to 'user_guide_src/source')
-rw-r--r--user_guide_src/source/changelog.rst1
-rw-r--r--user_guide_src/source/libraries/form_validation.rst38
2 files changed, 38 insertions, 1 deletions
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 423755b89..36ddbc92e 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -345,6 +345,7 @@ Release Date: Not Released
- :doc:`Language <libraries/language>` line keys must now be prefixed with **form_validation_**.
- Added rule **alpha_numeric_spaces**.
- Added support for custom error messages per field rule.
+ - Added support for callable rules when they are passed as an array.
- :doc:`Caching Library <libraries/caching>` changes include:
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index 988d6fa25..e51630905 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -474,6 +474,42 @@ then it will be passed as the second argument of your callback method.
boolean TRUE/FALSE it is assumed that the data is your newly processed
form data.
+Callable: Use anything as a rule
+================================
+
+If callback rules aren't good enough for you (for example, because they are
+limited to your controller), don't get disappointed, there's one more way
+to create custom rules: anything that ``is_callable()`` would return TRUE for.
+
+Consider the following example::
+
+ $this->form_validation->set_rules(
+ 'username', 'Username',
+ array(
+ 'required',
+ array($this->users_model, 'valid_username')
+ )
+ );
+
+The above code would use the ``valid_username()`` method from your
+``Users_model`` object.
+
+This is just an example of course, and callbacks aren't limited to models.
+You can use any object/method that accepts the field value as its' first
+parameter. Or if you're running PHP 5.3+, you can also use an anonymous
+function:
+
+ $this->form_validation->set_rules(
+ 'username', 'Username',
+ array(
+ 'required',
+ function($value)
+ {
+ // Check $value and return TRUE/FALSE
+ }
+ )
+ );
+
.. _setting-error-messages:
Setting Error Messages
@@ -491,7 +527,7 @@ If you need to set a custom error message for a particular field on
some particular rule, use the set_rules() method::
$this->form_validation->set_rules('field_name', 'Field Label', 'rule1|rule2|rule3',
- array('rule2' => 'Error Message on rule2 for this field_name')
+ array('rule2' => 'Error Message on rule2 for this field_name')
);
Where rule corresponds to the name of a particular rule, and Error