1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace App\Ship\Features\Validations; |
4
|
|
|
|
5
|
|
|
use Validator; |
6
|
|
|
|
7
|
|
|
/** |
8
|
|
|
* Class ValidationTrait |
9
|
|
|
* |
10
|
|
|
* @author Mahmoud Zalt <[email protected]> |
11
|
|
|
*/ |
12
|
|
|
trait ValidationTrait |
13
|
|
|
{ |
14
|
|
|
|
15
|
|
|
/** |
16
|
|
|
* Extend the default Laravel validation rules. |
17
|
|
|
*/ |
18
|
|
|
public function extendValidationRules() |
19
|
|
|
{ |
20
|
|
|
// Validate String contains no space. |
21
|
|
|
Validator::extend('no_spaces', function ($attribute, $value, $parameters, $validator) { |
|
|
|
|
22
|
|
|
return preg_match('/^\S*$/u', $value); |
23
|
|
|
}, ['String should not contain space.']); |
24
|
|
|
|
25
|
|
|
// Validate composite unique ID. |
26
|
|
|
// Usage: unique_composite:table,this-attribute-column,the-other-attribute-column |
27
|
|
|
// Example: 'values' => 'required|unique_composite:item_variant_values,value,item_variant_name_id', |
|
|
|
|
28
|
|
|
// 'item_variant_name_id' => 'required', |
|
|
|
|
29
|
|
|
Validator::extend('unique_composite', function ($attribute, $value, $parameters, $validator) { |
30
|
|
|
|
31
|
|
|
$queryBuilder = \DB::table($parameters[0]); |
32
|
|
|
|
33
|
|
|
$queryBuilder = is_array($value) ? $queryBuilder->whereIn($parameters[1], |
34
|
|
|
$value) : $queryBuilder->where($parameters[1], $value); |
35
|
|
|
|
36
|
|
|
$queryBuilder->where($parameters[2], $validator->getData()[$parameters[2]]); |
37
|
|
|
|
38
|
|
|
$queryResult = $queryBuilder->get(); |
39
|
|
|
|
40
|
|
|
return $queryResult->isEmpty(); |
41
|
|
|
}, ["The composite ID's must be unique."]); |
42
|
|
|
} |
43
|
|
|
} |
44
|
|
|
|
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.