CodeIgniter Forums
Right Sets for Validation Callbacks - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: Right Sets for Validation Callbacks (/showthread.php?tid=78826)



Right Sets for Validation Callbacks - daytodata - 03-15-2021

I'm having a bit of an issue on understanding how to create my own custom callback form validation. I keep getting the message "callback_test_validation is not a valid rule"

What I've done:

  1. I created a directory outside of app: Modules\Rules, so my setup looks like:
    app\
    Modules\
      |- Rules\

  2. My class (Modules\Rules\MyRules.php) is setup as such:
    Code:
    <?php namespace Modules\Rules;

    class MyRules
    {
        public function test_validate(string $str, string &$error = null): bool
        {
            $error = 'test error';
            return false;
        }
    }

  3. I've set the Config\Validation as such:
    Code:
        public $ruleSets = [
            Rules::class,
            FormatRules::class,
            FileRules::class,
            CreditCardRules::class,
            \Modules\Rules\MyRules::class,
        ];

  4. In my controller, I'm trying to reference the callback validation as such:
    Code:
    $validation =  \Config\Services::validation();
    $rules = ['myname'=>['label'=>'My Name','rules'=>'callback_test_validation']];
    $validation->setRules($rules);
Is this the right way to do it? Do I need to setup my folder structure differently?


RE: Right Sets for Validation Callbacks - kenjis - 03-15-2021

Read
https://codeigniter4.github.io/CodeIgniter4/general/modules.html#namespaces
https://codeigniter4.github.io/CodeIgniter4/libraries/validation.html#creating-custom-rules

And the rule name is `test_validation`, not `callback_test_validation`.