Bird
Raised Fist0
Laravelframework~20 mins

Custom validation rules in Laravel - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Laravel Validation Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this custom validation rule in Laravel?
Consider this Laravel custom validation rule class that checks if a string contains only vowels. What will be the validation result for the input 'aeiou'?
Laravel
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class OnlyVowels implements Rule
{
    public function passes($attribute, $value)
    {
        return preg_match('/^[aeiou]+$/i', $value) === 1;
    }

    public function message()
    {
        return 'The :attribute must contain only vowels.';
    }
}

// Usage in a controller validation:
$request->validate([
    'word' => ['required', new OnlyVowels],
]);
AThe validation fails because the regex is incorrect and matches consonants.
BThe validation fails because 'aeiou' contains uppercase letters.
CThe validation passes because 'aeiou' contains only vowels.
DThe validation passes only if the input is exactly 'aeiou'.
Attempts:
2 left
💡 Hint
Look at the regex pattern and the preg_match flags.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines a Laravel custom validation rule class?
Identify the option that correctly implements a Laravel custom validation rule class named 'Uppercase' that checks if a string is all uppercase.
A
class Uppercase implements Rule {
    public function passes($attribute, $value) {
        return strtoupper($value) === $value;
    }
    public function message() {
        return 'The :attribute must be uppercase.';
    }
}
B
class Uppercase extends Rule {
    public function passes($value) {
        return strtoupper($value) === $value;
    }
    public function message() {
        return 'The :attribute must be uppercase.';
    }
}
C
class Uppercase implements Rule {
    public function passes($attribute, $value) {
        return strtoupper($value) == $value;
    }
    public function message() {
        return 'The :attribute must be uppercase.';
    }
}
D
class Uppercase implements Rule {
    public function passes($attribute, $value) {
        return strtoupper($value) === $value
    }
    public function message() {
        return 'The :attribute must be uppercase.';
    }
}
Attempts:
2 left
💡 Hint
Check method signatures and syntax correctness.
🔧 Debug
advanced
2:00remaining
Why does this Laravel custom validation rule always fail?
Given this custom rule code, why does validation always fail regardless of input? class NumericString implements Rule { public function passes($attribute, $value) { return is_numeric($value) && is_string($value); } public function message() { return 'The :attribute must be a numeric string.'; } }
ABecause the message method should return a boolean, not a string.
BBecause the class does not implement the Rule interface.
CBecause the passes method is missing the $attribute parameter.
DBecause is_numeric returns true for numbers but is_string returns false for numeric values, so the condition is never true.
Attempts:
2 left
💡 Hint
Think about what is_numeric and is_string check for.
❓ state_output
advanced
2:00remaining
What is the validation error message output for this custom rule?
If a Laravel custom validation rule class returns this message method: public function message() { return 'The :attribute must be a palindrome.'; } And the attribute name is 'username', what is the final error message shown to the user?
Ausername must be a palindrome.
BThe username must be a palindrome.
CThe :attribute must be a palindrome.
DThe username must be a palindrome
Attempts:
2 left
💡 Hint
Laravel replaces :attribute with the field name in error messages.
🧠 Conceptual
expert
2:00remaining
Which statement about Laravel custom validation rules is TRUE?
Select the correct statement about Laravel custom validation rules.
ACustom validation rules can be implemented as invokable classes or using the Rule interface.
BCustom validation rules must always extend the base Validator class to work.
CCustom validation rules cannot access other request data during validation.
DCustom validation rules must return a boolean from the message() method.
Attempts:
2 left
💡 Hint
Think about how Laravel allows custom rules to be created.

Practice

(1/5)
1. What is the main purpose of creating a custom validation rule in Laravel?
easy
A. To define your own logic for validating data beyond built-in rules
B. To change the database schema automatically
C. To create new database tables
D. To generate HTML forms automatically

Solution

  1. Step 1: Understand Laravel validation rules

    Laravel provides built-in rules but sometimes you need to check data in a way not covered by them.
  2. Step 2: Purpose of custom validation rules

    Custom rules let you write your own logic to validate data exactly as you want.
  3. Final Answer:

    To define your own logic for validating data beyond built-in rules -> Option A
  4. Quick Check:

    Custom validation = custom logic [OK]
Hint: Custom rules check data your way, not Laravel's default [OK]
Common Mistakes:
  • Thinking custom rules change database structure
  • Confusing validation with form generation
  • Assuming custom rules create tables
2. Which method must you implement in a Laravel custom validation rule class to check if the data passes validation?
easy
A. check
B. message
C. validate
D. passes

Solution

  1. Step 1: Recall custom rule methods

    Laravel custom validation rules require two methods: passes and message.
  2. Step 2: Identify method for validation logic

    The passes method contains the logic to decide if the data is valid or not.
  3. Final Answer:

    passes -> Option D
  4. Quick Check:

    passes() checks data validity [OK]
Hint: passes() returns true/false for validation [OK]
Common Mistakes:
  • Using message() to check data validity
  • Assuming validate() or check() are required methods
  • Confusing method names
3. Given this custom rule class snippet, what will $rule->passes('age', 17) return?
class AdultRule implements \Illuminate\Contracts\Validation\Rule {
    public function passes($attribute, $value) {
        return $value >= 18;
    }
    public function message() {
        return 'You must be an adult.';
    }
}
medium
A. true
B. Throws an error
C. false
D. null

Solution

  1. Step 1: Understand the passes method logic

    The method returns true if the value is 18 or more, false otherwise.
  2. Step 2: Evaluate passes with value 17

    Since 17 is less than 18, the method returns false.
  3. Final Answer:

    false -> Option C
  4. Quick Check:

    17 < 18 means passes() = false [OK]
Hint: Check condition in passes() with given value [OK]
Common Mistakes:
  • Assuming 17 passes as adult
  • Thinking passes() throws error for numbers
  • Confusing message() with passes()
4. What is wrong with this custom validation rule class?
class EvenNumberRule implements \Illuminate\Contracts\Validation\Rule {
    public function passes($attribute, $value) {
        return $value % 2 == 0
    }
    public function message() {
        return 'The number must be even.';
    }
}
medium
A. message method should return a boolean
B. Missing semicolon after return statement in passes method
C. passes method should accept only one parameter
D. Class must extend a base validation class

Solution

  1. Step 1: Check syntax in passes method

    The return statement lacks a semicolon at the end, causing a syntax error.
  2. Step 2: Verify other method signatures

    message() correctly returns a string, passes() correctly has two parameters, and implementing the interface is enough.
  3. Final Answer:

    Missing semicolon after return statement in passes method -> Option B
  4. Quick Check:

    Missing semicolon = syntax error [OK]
Hint: Look for missing semicolons in PHP code [OK]
Common Mistakes:
  • Thinking message() must return boolean
  • Assuming passes() takes one parameter
  • Believing class must extend base class
5. You want to create a custom validation rule that checks if a string contains only vowels. Which approach correctly implements the passes method?
hard
A. return preg_match('/^[aeiouAEIOU]+$/', $value) === 1;
B. return strlen($value) > 0 && ctype_alpha($value);
C. return strpos($value, 'aeiou') !== false;
D. return $value == strtolower($value);

Solution

  1. Step 1: Understand the requirement

    The string must contain only vowels (a, e, i, o, u) in any case.
  2. Step 2: Analyze each option

    return preg_match('/^[aeiouAEIOU]+$/', $value) === 1; uses regex to check if the string contains only vowels from start to end. return strlen($value) > 0 && ctype_alpha($value); checks only letters but not vowels. return strpos($value, 'aeiou') !== false; checks if 'aeiou' substring exists, which is incorrect. return $value == strtolower($value); checks if string is lowercase, unrelated to vowels.
  3. Final Answer:

    return preg_match('/^[aeiouAEIOU]+$/', $value) === 1; -> Option A
  4. Quick Check:

    Regex matching only vowels = correct passes() [OK]
Hint: Use regex to match only vowels in string [OK]
Common Mistakes:
  • Using ctype_alpha without vowel check
  • Checking substring instead of full string
  • Confusing case check with vowel check
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard