|
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.