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\View\Concerns;
4
 
5
use InvalidArgumentException;
6
 
7
trait ManagesFragments
8
{
9
    /**
10
     * All of the captured, rendered fragments.
11
     *
12
     * @var array
13
     */
14
    protected $fragments = [];
15
 
16
    /**
17
     * The stack of in-progress fragment renders.
18
     *
19
     * @var array
20
     */
21
    protected $fragmentStack = [];
22
 
23
    /**
24
     * Start injecting content into a fragment.
25
     *
26
     * @param  string  $fragment
27
     * @return void
28
     */
29
    public function startFragment($fragment)
30
    {
31
        if (ob_start()) {
32
            $this->fragmentStack[] = $fragment;
33
        }
34
    }
35
 
36
    /**
37
     * Stop injecting content into a fragment.
38
     *
39
     * @return string
40
     *
41
     * @throws \InvalidArgumentException
42
     */
43
    public function stopFragment()
44
    {
45
        if (empty($this->fragmentStack)) {
46
            throw new InvalidArgumentException('Cannot end a fragment without first starting one.');
47
        }
48
 
49
        $last = array_pop($this->fragmentStack);
50
 
51
        $this->fragments[$last] = ob_get_clean();
52
 
53
        return $this->fragments[$last];
54
    }
55
 
56
    /**
57
     * Get the contents of a fragment.
58
     *
59
     * @param  string  $name
60
     * @param  string|null  $default
61
     * @return mixed
62
     */
63
    public function getFragment($name, $default = null)
64
    {
65
        return $this->getFragments()[$name] ?? $default;
66
    }
67
 
68
    /**
69
     * Get the entire array of rendered fragments.
70
     *
71
     * @return array
72
     */
73
    public function getFragments()
74
    {
75
        return $this->fragments;
76
    }
77
 
78
    /**
79
     * Flush all of the fragments.
80
     *
81
     * @return void
82
     */
83
    public function flushFragments()
84
    {
85
        $this->fragments = [];
86
        $this->fragmentStack = [];
87
    }
88
}