Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Validation;
4
 
5
use Illuminate\Support\Arr;
6
 
7
class NestedRules
8
{
9
    /**
10
     * The callback to execute.
11
     *
12
     * @var callable
13
     */
14
    protected $callback;
15
 
16
    /**
17
     * Create a new nested rule instance.
18
     *
19
     * @param  callable  $callback
20
     * @return void
21
     */
22
    public function __construct(callable $callback)
23
    {
24
        $this->callback = $callback;
25
    }
26
 
27
    /**
28
     * Compile the callback into an array of rules.
29
     *
30
     * @param  string  $attribute
31
     * @param  mixed  $value
32
     * @param  mixed  $data
33
     * @return \stdClass
34
     */
35
    public function compile($attribute, $value, $data = null)
36
    {
37
        $rules = call_user_func($this->callback, $value, $attribute, $data);
38
 
39
        $parser = new ValidationRuleParser(
40
            Arr::undot(Arr::wrap($data))
41
        );
42
 
43
        if (is_array($rules) && Arr::isAssoc($rules)) {
44
            $nested = [];
45
 
46
            foreach ($rules as $key => $rule) {
47
                $nested[$attribute.'.'.$key] = $rule;
48
            }
49
 
50
            return $parser->explode($nested);
51
        }
52
 
53
        return $parser->explode([$attribute => $rules]);
54
    }
55
}