Giter Site home page Giter Site logo

f3-validate's Introduction

Fat Free Framework Validator

An easy to use and strait to the point validation trait for Fat Free Framework

Build Status

Installation

Using Composer
composer require geofmureithi/f3-validate
Manually

Copy the lib\validate.php file to the lib folder or any root of an auto included folder.

Remember it requires at least php 5.4 to use traits

Getting Started

class Profile
{
    use Validate; //<--- Trait

    public function getRules()
    {
        return [
            "email" => "reqired|email"
        ];
    }
    
    public function save()
    {
        //.....
    }
}

$data = $f3->get('POST')
$profile = new Profile();
$result = $profile->check($data);
if( $result != true) return $result; //errors
$profile->save();

Available Validators

  • required Ensures the specified key value exists and is not empty
  • email Checks for a valid email address
  • max_length,n Checks key value length, makes sure it's not longer than the specified length. n = length parameter.
  • min_length,n Checks key value length, makes sure it's not shorter than the specified length. n = length parameter.
  • exact_length,n Ensures that the key value length precisely matches the specified length. n = length parameter.
  • alpha Ensure only alpha characters are present in the key value (a-z, A-Z)
  • alpha_numeric Ensure only alpha-numeric characters are present in the key value (a-z, A-Z, 0-9)
  • numeric Ensure only numeric key values
  • boolean Checks for PHP accepted boolean values, returns TRUE for "1", "true", "on" and "yes"
  • url Check for valid URL or subdomain
  • ipv4 Check for valid IPv4 address
  • ipv6 Check for valid IPv6 address
  • card Check for a valid credit card number (Uses the MOD10 Checksum Algorithm)
  • phone Validate phone numbers that match the following examples: 555-555-5555 , 5555425555, 555 555 5555, 1(519) 555-4444, 1 (519) 555-4422, 1-555-555-5555
  • regex You can pass a custom regex using the following format: 'regex,/your-regex/'

Adding custom validators and filters is made easy by using callback functions.

$message = "The value of {0} must include each of these items : {1}";
Validate::addValidator("contains", function ($value, $ruleConfigs) {
  $required = explode("&", substr($ruleConfigs[0], 1, -1));
  $diff = array_diff($required, explode(",", $value));
  return empty($diff);
 }, $message);
 
 //Or
Validate::addValidator("custom", "SampleClass::testCustom", "Custom Error");

RoadMap

  • Add Tests and Travis
  • Convert to Trait
  • Use Audit and make Lib more lightweight
  • Allow Translations
  • Add Composer
  • Add detailed Examples

Development

Tests are run using PHPUnit

./vendor/bin/phpunit --bootstrap vendor/autoload.php --testdox tests

Examples

See the tests folder for now

Contributing

Feel free to Create a PR

f3-validate's People

Contributors

geofmureithi avatar kumy avatar nimah79 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

f3-validate's Issues

Add Same Rule

Please Add Same Rule so Password and Password_confirmed work correctly.

Currently there is no same rule so validation can't match if both field contain same value

example of it usage should be same:password

Validator alpha_numeric in documentation

Just a small thing. In the Readme ist says "alpha_numeric" under Available Validators, but the validator under f3-validate/lib/validate.php is called "alphanumeric".

Regex validation mistake

public function validates, line 400.
it parses an expression by format: regex,/here exactly regex body/
but what's happen if the regex body has one or more comma as well ?

I offer changes:

                    if (($rv=strstr($rule, ',')) !== false) {
                        $rule   = explode(',', $rule);
                        $method = 'validate_'.$rule[0];
                        $param  = ltrim($rv,',');//$rule[1];
                        $rule   = $rule[0];
                    } else {
                        $method = 'validate_'.$rule;
                    }

or something better ))

and also mistake happens when used the char | at regex. It conflicts with delimiter |

Publish on packagist?

I cannot find this package on https://packagist.org, may you publish it there? That would help for installing, maintaining it up to date, and we don't have to commit external packages in our vcs.

Thanks

errors keys from get_errors_array should not be uppercased

Not using the "original key" in the array of errors returned by function get_errors_array() is not a good idea.

This is not really user friendly when using it to display errors in f3 templates as we have to do a special treatment to match strings against input names.

Moreover, input fields names containing underscores or dash are replaced by spaces, this will prevent variable retrieving within templates.


From:

<input name="password" />
<span class="error text-danger">{{ @ERRORS.Password }}</span>

To:

<input name="password" />
<span class="error text-danger">{{ @ERRORS.password }}</span>

From:

<input name="password_verify" />
<span class="error text-danger">{{ @ERRORS.Password Verify }}</span>{* broken *}

To:

<input name="password" />
<span class="error text-danger">{{ @ERRORS.password_verify }}</span>

error msg returns

in the getting started example

print_r($valid);
it returns this:
&gt; The &lt;span class=&quot;gump-field&quot;&gt;Article Title&lt;/span&gt; field is required

how do I make it output html and not this string with encoded html entities?
I've tried using html_entity_decode but it didn't change anything

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.