Vendor lock
This commit is contained in:
145
vendor/illuminate/view/Concerns/ManagesComponents.php
vendored
Normal file
145
vendor/illuminate/view/Concerns/ManagesComponents.php
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\View\Concerns;
|
||||
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\HtmlString;
|
||||
|
||||
trait ManagesComponents
|
||||
{
|
||||
/**
|
||||
* The components being rendered.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $componentStack = [];
|
||||
|
||||
/**
|
||||
* The original data passed to the component.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $componentData = [];
|
||||
|
||||
/**
|
||||
* The slot contents for the component.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $slots = [];
|
||||
|
||||
/**
|
||||
* The names of the slots being rendered.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $slotStack = [];
|
||||
|
||||
/**
|
||||
* Start a component rendering process.
|
||||
*
|
||||
* @param string $name
|
||||
* @param array $data
|
||||
* @return void
|
||||
*/
|
||||
public function startComponent($name, array $data = [])
|
||||
{
|
||||
if (ob_start()) {
|
||||
$this->componentStack[] = $name;
|
||||
|
||||
$this->componentData[$this->currentComponent()] = $data;
|
||||
|
||||
$this->slots[$this->currentComponent()] = [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first view that actually exists from the given list, and start a component.
|
||||
*
|
||||
* @param array $names
|
||||
* @param array $data
|
||||
* @return void
|
||||
*/
|
||||
public function startComponentFirst(array $names, array $data = [])
|
||||
{
|
||||
$name = Arr::first($names, function ($item) {
|
||||
return $this->exists($item);
|
||||
});
|
||||
|
||||
$this->startComponent($name, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the current component.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function renderComponent()
|
||||
{
|
||||
$name = array_pop($this->componentStack);
|
||||
|
||||
return $this->make($name, $this->componentData($name))->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data for the given component.
|
||||
*
|
||||
* @param string $name
|
||||
* @return array
|
||||
*/
|
||||
protected function componentData($name)
|
||||
{
|
||||
return array_merge(
|
||||
$this->componentData[count($this->componentStack)],
|
||||
['slot' => new HtmlString(trim(ob_get_clean()))],
|
||||
$this->slots[count($this->componentStack)]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the slot rendering process.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string|null $content
|
||||
* @return void
|
||||
*/
|
||||
public function slot($name, $content = null)
|
||||
{
|
||||
if (func_num_args() === 2) {
|
||||
$this->slots[$this->currentComponent()][$name] = $content;
|
||||
} else {
|
||||
if (ob_start()) {
|
||||
$this->slots[$this->currentComponent()][$name] = '';
|
||||
|
||||
$this->slotStack[$this->currentComponent()][] = $name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the slot content for rendering.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function endSlot()
|
||||
{
|
||||
last($this->componentStack);
|
||||
|
||||
$currentSlot = array_pop(
|
||||
$this->slotStack[$this->currentComponent()]
|
||||
);
|
||||
|
||||
$this->slots[$this->currentComponent()]
|
||||
[$currentSlot] = new HtmlString(trim(ob_get_clean()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the index for the current component.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function currentComponent()
|
||||
{
|
||||
return count($this->componentStack) - 1;
|
||||
}
|
||||
}
|
192
vendor/illuminate/view/Concerns/ManagesEvents.php
vendored
Normal file
192
vendor/illuminate/view/Concerns/ManagesEvents.php
vendored
Normal file
@ -0,0 +1,192 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\View\Concerns;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Contracts\View\View as ViewContract;
|
||||
|
||||
trait ManagesEvents
|
||||
{
|
||||
/**
|
||||
* Register a view creator event.
|
||||
*
|
||||
* @param array|string $views
|
||||
* @param \Closure|string $callback
|
||||
* @return array
|
||||
*/
|
||||
public function creator($views, $callback)
|
||||
{
|
||||
$creators = [];
|
||||
|
||||
foreach ((array) $views as $view) {
|
||||
$creators[] = $this->addViewEvent($view, $callback, 'creating: ');
|
||||
}
|
||||
|
||||
return $creators;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register multiple view composers via an array.
|
||||
*
|
||||
* @param array $composers
|
||||
* @return array
|
||||
*/
|
||||
public function composers(array $composers)
|
||||
{
|
||||
$registered = [];
|
||||
|
||||
foreach ($composers as $callback => $views) {
|
||||
$registered = array_merge($registered, $this->composer($views, $callback));
|
||||
}
|
||||
|
||||
return $registered;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a view composer event.
|
||||
*
|
||||
* @param array|string $views
|
||||
* @param \Closure|string $callback
|
||||
* @return array
|
||||
*/
|
||||
public function composer($views, $callback)
|
||||
{
|
||||
$composers = [];
|
||||
|
||||
foreach ((array) $views as $view) {
|
||||
$composers[] = $this->addViewEvent($view, $callback, 'composing: ');
|
||||
}
|
||||
|
||||
return $composers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an event for a given view.
|
||||
*
|
||||
* @param string $view
|
||||
* @param \Closure|string $callback
|
||||
* @param string $prefix
|
||||
* @return \Closure|null
|
||||
*/
|
||||
protected function addViewEvent($view, $callback, $prefix = 'composing: ')
|
||||
{
|
||||
$view = $this->normalizeName($view);
|
||||
|
||||
if ($callback instanceof Closure) {
|
||||
$this->addEventListener($prefix.$view, $callback);
|
||||
|
||||
return $callback;
|
||||
} elseif (is_string($callback)) {
|
||||
return $this->addClassEvent($view, $callback, $prefix);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a class based view composer.
|
||||
*
|
||||
* @param string $view
|
||||
* @param string $class
|
||||
* @param string $prefix
|
||||
* @return \Closure
|
||||
*/
|
||||
protected function addClassEvent($view, $class, $prefix)
|
||||
{
|
||||
$name = $prefix.$view;
|
||||
|
||||
// When registering a class based view "composer", we will simply resolve the
|
||||
// classes from the application IoC container then call the compose method
|
||||
// on the instance. This allows for convenient, testable view composers.
|
||||
$callback = $this->buildClassEventCallback(
|
||||
$class, $prefix
|
||||
);
|
||||
|
||||
$this->addEventListener($name, $callback);
|
||||
|
||||
return $callback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a class based container callback Closure.
|
||||
*
|
||||
* @param string $class
|
||||
* @param string $prefix
|
||||
* @return \Closure
|
||||
*/
|
||||
protected function buildClassEventCallback($class, $prefix)
|
||||
{
|
||||
[$class, $method] = $this->parseClassEvent($class, $prefix);
|
||||
|
||||
// Once we have the class and method name, we can build the Closure to resolve
|
||||
// the instance out of the IoC container and call the method on it with the
|
||||
// given arguments that are passed to the Closure as the composer's data.
|
||||
return function () use ($class, $method) {
|
||||
return call_user_func_array(
|
||||
[$this->container->make($class), $method], func_get_args()
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a class based composer name.
|
||||
*
|
||||
* @param string $class
|
||||
* @param string $prefix
|
||||
* @return array
|
||||
*/
|
||||
protected function parseClassEvent($class, $prefix)
|
||||
{
|
||||
return Str::parseCallback($class, $this->classEventMethodForPrefix($prefix));
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the class event method based on the given prefix.
|
||||
*
|
||||
* @param string $prefix
|
||||
* @return string
|
||||
*/
|
||||
protected function classEventMethodForPrefix($prefix)
|
||||
{
|
||||
return Str::contains($prefix, 'composing') ? 'compose' : 'create';
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a listener to the event dispatcher.
|
||||
*
|
||||
* @param string $name
|
||||
* @param \Closure $callback
|
||||
* @return void
|
||||
*/
|
||||
protected function addEventListener($name, $callback)
|
||||
{
|
||||
if (Str::contains($name, '*')) {
|
||||
$callback = function ($name, array $data) use ($callback) {
|
||||
return $callback($data[0]);
|
||||
};
|
||||
}
|
||||
|
||||
$this->events->listen($name, $callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the composer for a given view.
|
||||
*
|
||||
* @param \Illuminate\Contracts\View\View $view
|
||||
* @return void
|
||||
*/
|
||||
public function callComposer(ViewContract $view)
|
||||
{
|
||||
$this->events->dispatch('composing: '.$view->name(), [$view]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the creator for a given view.
|
||||
*
|
||||
* @param \Illuminate\Contracts\View\View $view
|
||||
* @return void
|
||||
*/
|
||||
public function callCreator(ViewContract $view)
|
||||
{
|
||||
$this->events->dispatch('creating: '.$view->name(), [$view]);
|
||||
}
|
||||
}
|
220
vendor/illuminate/view/Concerns/ManagesLayouts.php
vendored
Normal file
220
vendor/illuminate/view/Concerns/ManagesLayouts.php
vendored
Normal file
@ -0,0 +1,220 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\View\Concerns;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use Illuminate\Contracts\View\View;
|
||||
|
||||
trait ManagesLayouts
|
||||
{
|
||||
/**
|
||||
* All of the finished, captured sections.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $sections = [];
|
||||
|
||||
/**
|
||||
* The stack of in-progress sections.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $sectionStack = [];
|
||||
|
||||
/**
|
||||
* The parent placeholder for the request.
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected static $parentPlaceholder = [];
|
||||
|
||||
/**
|
||||
* Start injecting content into a section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string|null $content
|
||||
* @return void
|
||||
*/
|
||||
public function startSection($section, $content = null)
|
||||
{
|
||||
if ($content === null) {
|
||||
if (ob_start()) {
|
||||
$this->sectionStack[] = $section;
|
||||
}
|
||||
} else {
|
||||
$this->extendSection($section, $content instanceof View ? $content : e($content));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inject inline content into a section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $content
|
||||
* @return void
|
||||
*/
|
||||
public function inject($section, $content)
|
||||
{
|
||||
$this->startSection($section, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop injecting content into a section and return its contents.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function yieldSection()
|
||||
{
|
||||
if (empty($this->sectionStack)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->yieldContent($this->stopSection());
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop injecting content into a section.
|
||||
*
|
||||
* @param bool $overwrite
|
||||
* @return string
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function stopSection($overwrite = false)
|
||||
{
|
||||
if (empty($this->sectionStack)) {
|
||||
throw new InvalidArgumentException('Cannot end a section without first starting one.');
|
||||
}
|
||||
|
||||
$last = array_pop($this->sectionStack);
|
||||
|
||||
if ($overwrite) {
|
||||
$this->sections[$last] = ob_get_clean();
|
||||
} else {
|
||||
$this->extendSection($last, ob_get_clean());
|
||||
}
|
||||
|
||||
return $last;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop injecting content into a section and append it.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function appendSection()
|
||||
{
|
||||
if (empty($this->sectionStack)) {
|
||||
throw new InvalidArgumentException('Cannot end a section without first starting one.');
|
||||
}
|
||||
|
||||
$last = array_pop($this->sectionStack);
|
||||
|
||||
if (isset($this->sections[$last])) {
|
||||
$this->sections[$last] .= ob_get_clean();
|
||||
} else {
|
||||
$this->sections[$last] = ob_get_clean();
|
||||
}
|
||||
|
||||
return $last;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append content to a given section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $content
|
||||
* @return void
|
||||
*/
|
||||
protected function extendSection($section, $content)
|
||||
{
|
||||
if (isset($this->sections[$section])) {
|
||||
$content = str_replace(static::parentPlaceholder($section), $content, $this->sections[$section]);
|
||||
}
|
||||
|
||||
$this->sections[$section] = $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the string contents of a section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $default
|
||||
* @return string
|
||||
*/
|
||||
public function yieldContent($section, $default = '')
|
||||
{
|
||||
$sectionContent = $default instanceof View ? $default : e($default);
|
||||
|
||||
if (isset($this->sections[$section])) {
|
||||
$sectionContent = $this->sections[$section];
|
||||
}
|
||||
|
||||
$sectionContent = str_replace('@@parent', '--parent--holder--', $sectionContent);
|
||||
|
||||
return str_replace(
|
||||
'--parent--holder--', '@parent', str_replace(static::parentPlaceholder($section), '', $sectionContent)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the parent placeholder for the current request.
|
||||
*
|
||||
* @param string $section
|
||||
* @return string
|
||||
*/
|
||||
public static function parentPlaceholder($section = '')
|
||||
{
|
||||
if (! isset(static::$parentPlaceholder[$section])) {
|
||||
static::$parentPlaceholder[$section] = '##parent-placeholder-'.sha1($section).'##';
|
||||
}
|
||||
|
||||
return static::$parentPlaceholder[$section];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if section exists.
|
||||
*
|
||||
* @param string $name
|
||||
* @return bool
|
||||
*/
|
||||
public function hasSection($name)
|
||||
{
|
||||
return array_key_exists($name, $this->sections);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contents of a section.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string|null $default
|
||||
* @return mixed
|
||||
*/
|
||||
public function getSection($name, $default = null)
|
||||
{
|
||||
return $this->getSections()[$name] ?? $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the entire array of sections.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getSections()
|
||||
{
|
||||
return $this->sections;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush all of the sections.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function flushSections()
|
||||
{
|
||||
$this->sections = [];
|
||||
$this->sectionStack = [];
|
||||
}
|
||||
}
|
94
vendor/illuminate/view/Concerns/ManagesLoops.php
vendored
Normal file
94
vendor/illuminate/view/Concerns/ManagesLoops.php
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\View\Concerns;
|
||||
|
||||
use Countable;
|
||||
use Illuminate\Support\Arr;
|
||||
|
||||
trait ManagesLoops
|
||||
{
|
||||
/**
|
||||
* The stack of in-progress loops.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $loopsStack = [];
|
||||
|
||||
/**
|
||||
* Add new loop to the stack.
|
||||
*
|
||||
* @param \Countable|array $data
|
||||
* @return void
|
||||
*/
|
||||
public function addLoop($data)
|
||||
{
|
||||
$length = is_array($data) || $data instanceof Countable ? count($data) : null;
|
||||
|
||||
$parent = Arr::last($this->loopsStack);
|
||||
|
||||
$this->loopsStack[] = [
|
||||
'iteration' => 0,
|
||||
'index' => 0,
|
||||
'remaining' => $length ?? null,
|
||||
'count' => $length,
|
||||
'first' => true,
|
||||
'last' => isset($length) ? $length == 1 : null,
|
||||
'odd' => false,
|
||||
'even' => true,
|
||||
'depth' => count($this->loopsStack) + 1,
|
||||
'parent' => $parent ? (object) $parent : null,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment the top loop's indices.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function incrementLoopIndices()
|
||||
{
|
||||
$loop = $this->loopsStack[$index = count($this->loopsStack) - 1];
|
||||
|
||||
$this->loopsStack[$index] = array_merge($this->loopsStack[$index], [
|
||||
'iteration' => $loop['iteration'] + 1,
|
||||
'index' => $loop['iteration'],
|
||||
'first' => $loop['iteration'] == 0,
|
||||
'odd' => ! $loop['odd'],
|
||||
'even' => ! $loop['even'],
|
||||
'remaining' => isset($loop['count']) ? $loop['remaining'] - 1 : null,
|
||||
'last' => isset($loop['count']) ? $loop['iteration'] == $loop['count'] - 1 : null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Pop a loop from the top of the loop stack.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function popLoop()
|
||||
{
|
||||
array_pop($this->loopsStack);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an instance of the last loop in the stack.
|
||||
*
|
||||
* @return \stdClass|null
|
||||
*/
|
||||
public function getLastLoop()
|
||||
{
|
||||
if ($last = Arr::last($this->loopsStack)) {
|
||||
return (object) $last;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the entire loop stack.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getLoopStack()
|
||||
{
|
||||
return $this->loopsStack;
|
||||
}
|
||||
}
|
179
vendor/illuminate/view/Concerns/ManagesStacks.php
vendored
Normal file
179
vendor/illuminate/view/Concerns/ManagesStacks.php
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\View\Concerns;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
trait ManagesStacks
|
||||
{
|
||||
/**
|
||||
* All of the finished, captured push sections.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $pushes = [];
|
||||
|
||||
/**
|
||||
* All of the finished, captured prepend sections.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $prepends = [];
|
||||
|
||||
/**
|
||||
* The stack of in-progress push sections.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $pushStack = [];
|
||||
|
||||
/**
|
||||
* Start injecting content into a push section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $content
|
||||
* @return void
|
||||
*/
|
||||
public function startPush($section, $content = '')
|
||||
{
|
||||
if ($content === '') {
|
||||
if (ob_start()) {
|
||||
$this->pushStack[] = $section;
|
||||
}
|
||||
} else {
|
||||
$this->extendPush($section, $content);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop injecting content into a push section.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function stopPush()
|
||||
{
|
||||
if (empty($this->pushStack)) {
|
||||
throw new InvalidArgumentException('Cannot end a push stack without first starting one.');
|
||||
}
|
||||
|
||||
return tap(array_pop($this->pushStack), function ($last) {
|
||||
$this->extendPush($last, ob_get_clean());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Append content to a given push section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $content
|
||||
* @return void
|
||||
*/
|
||||
protected function extendPush($section, $content)
|
||||
{
|
||||
if (! isset($this->pushes[$section])) {
|
||||
$this->pushes[$section] = [];
|
||||
}
|
||||
|
||||
if (! isset($this->pushes[$section][$this->renderCount])) {
|
||||
$this->pushes[$section][$this->renderCount] = $content;
|
||||
} else {
|
||||
$this->pushes[$section][$this->renderCount] .= $content;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start prepending content into a push section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $content
|
||||
* @return void
|
||||
*/
|
||||
public function startPrepend($section, $content = '')
|
||||
{
|
||||
if ($content === '') {
|
||||
if (ob_start()) {
|
||||
$this->pushStack[] = $section;
|
||||
}
|
||||
} else {
|
||||
$this->extendPrepend($section, $content);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop prepending content into a push section.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function stopPrepend()
|
||||
{
|
||||
if (empty($this->pushStack)) {
|
||||
throw new InvalidArgumentException('Cannot end a prepend operation without first starting one.');
|
||||
}
|
||||
|
||||
return tap(array_pop($this->pushStack), function ($last) {
|
||||
$this->extendPrepend($last, ob_get_clean());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepend content to a given stack.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $content
|
||||
* @return void
|
||||
*/
|
||||
protected function extendPrepend($section, $content)
|
||||
{
|
||||
if (! isset($this->prepends[$section])) {
|
||||
$this->prepends[$section] = [];
|
||||
}
|
||||
|
||||
if (! isset($this->prepends[$section][$this->renderCount])) {
|
||||
$this->prepends[$section][$this->renderCount] = $content;
|
||||
} else {
|
||||
$this->prepends[$section][$this->renderCount] = $content.$this->prepends[$section][$this->renderCount];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the string contents of a push section.
|
||||
*
|
||||
* @param string $section
|
||||
* @param string $default
|
||||
* @return string
|
||||
*/
|
||||
public function yieldPushContent($section, $default = '')
|
||||
{
|
||||
if (! isset($this->pushes[$section]) && ! isset($this->prepends[$section])) {
|
||||
return $default;
|
||||
}
|
||||
|
||||
$output = '';
|
||||
|
||||
if (isset($this->prepends[$section])) {
|
||||
$output .= implode(array_reverse($this->prepends[$section]));
|
||||
}
|
||||
|
||||
if (isset($this->pushes[$section])) {
|
||||
$output .= implode($this->pushes[$section]);
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush all of the stacks.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function flushStacks()
|
||||
{
|
||||
$this->pushes = [];
|
||||
$this->prepends = [];
|
||||
$this->pushStack = [];
|
||||
}
|
||||
}
|
38
vendor/illuminate/view/Concerns/ManagesTranslations.php
vendored
Normal file
38
vendor/illuminate/view/Concerns/ManagesTranslations.php
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\View\Concerns;
|
||||
|
||||
trait ManagesTranslations
|
||||
{
|
||||
/**
|
||||
* The translation replacements for the translation being rendered.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $translationReplacements = [];
|
||||
|
||||
/**
|
||||
* Start a translation block.
|
||||
*
|
||||
* @param array $replacements
|
||||
* @return void
|
||||
*/
|
||||
public function startTranslation($replacements = [])
|
||||
{
|
||||
ob_start();
|
||||
|
||||
$this->translationReplacements = $replacements;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the current translation.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function renderTranslation()
|
||||
{
|
||||
return $this->container->make('translator')->getFromJson(
|
||||
trim(ob_get_clean()), $this->translationReplacements
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user