Completed
Pull Request — master (#293)
by Christian
02:05
created

LayoutViewHelper::render()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
namespace TYPO3Fluid\Fluid\ViewHelpers;
3
4
/*
5
 * This file belongs to the package "TYPO3 Fluid".
6
 * See LICENSE.txt that was shipped with this package.
7
 */
8
9
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ViewHelperNode;
10
use TYPO3Fluid\Fluid\Core\Variables\VariableProviderInterface;
11
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
12
use TYPO3Fluid\Fluid\Core\ViewHelper\PostParseInterface;
13
use TYPO3Fluid\Fluid\Core\ViewHelper\TemplateVariableContainer;
14
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\ParserRuntimeOnly;
15
16
/**
17
 * With this tag, you can select a layout to be used for the current template.
18
 *
19
 * = Examples =
20
 *
21
 * <code>
22
 * <f:layout name="main" />
23
 * </code>
24
 * <output>
25
 * (no output)
26
 * </output>
27
 *
28
 * @api
29
 */
30
class LayoutViewHelper extends AbstractViewHelper
31
{
32
    use ParserRuntimeOnly;
33
34
    /**
35
     * Initialize arguments
36
     *
37
     * @return void
38
     * @api
39
     */
40
    public function initializeArguments()
41
    {
42
        $this->registerArgument('name', 'string', 'Name of layout to use. If none given, "Default" is used.');
43
    }
44
45
    /**
46
     * On the post parse event, add the "layoutName" variable to the variable container so it can be used by the TemplateView.
47
     *
48
     * @param ViewHelperNode $node
49
     * @param array $arguments
50
     * @param VariableProviderInterface $variableContainer
51
     * @return void
52
     */
53
    public static function postParseEvent(
54
        ViewHelperNode $node,
55
        array $arguments,
56
        VariableProviderInterface $variableContainer
57
    ) {
58
        if (isset($arguments['name'])) {
59
            $layoutNameNode = $arguments['name'];
60
        } else {
61
            $layoutNameNode = 'Default';
62
        }
63
64
        $variableContainer->add('layoutName', $layoutNameNode);
65
    }
66
}
67