Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
arrayNode example
$rootNode
=
$treeBuilder
->
getRootNode
(
)
;
$rootNode
->
children
(
)
->
booleanNode
(
'enabled'
)
->
end
(
)
->
booleanNode
(
'indexing_enabled'
)
->
end
(
)
->
integerNode
(
'indexing_batch_size'
)
->
defaultValue
(
100
)
->
end
(
)
->
scalarNode
(
'hosts'
)
->
end
(
)
->
scalarNode
(
'index_prefix'
)
->
end
(
)
->
scalarNode
(
'throw_exception'
)
->
end
(
)
->
scalarNode
(
'logger_level'
)
->
defaultValue
(
$debug
? Level::Debug : Level::Error
)
->
end
(
)
->
arrayNode
(
'ssl'
)
->
children
(
)
->
scalarNode
(
'cert_path'
)
->
end
(
)
->
scalarNode
(
'cert_password'
)
->
end
(
)
->
scalarNode
(
'cert_key_path'
)
->
end
(
)
->
scalarNode
(
'cert_key_password'
)
->
end
(
)
->
booleanNode
(
'verify_server_cert'
)
->
defaultValue
(
true
)
->
end
(
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'index_settings'
)
->
variablePrototype
(
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'analysis'
)
->
performNoDeepMerging
(
)
->
variablePrototype
(
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'language_analyzer_mapping'
)
->
defaultValue
(
[
]
)
->
scalarPrototype
(
)
->
end
(
)
->
end
(
)
public
function
addConfiguration
(
NodeDefinition
$node
)
{
$node
->
fixXmlConfig
(
'extra_field'
)
->
fixXmlConfig
(
'default_role'
)
->
children
(
)
->
scalarNode
(
'service'
)
->
isRequired
(
)
->
cannotBeEmpty
(
)
->
defaultValue
(
'ldap'
)
->
end
(
)
->
scalarNode
(
'base_dn'
)
->
isRequired
(
)
->
cannotBeEmpty
(
)
->
end
(
)
->
scalarNode
(
'search_dn'
)
->
defaultNull
(
)
->
end
(
)
->
scalarNode
(
'search_password'
)
->
defaultNull
(
)
->
end
(
)
->
arrayNode
(
'extra_fields'
)
->
prototype
(
'scalar'
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'default_roles'
)
->
beforeNormalization
(
)
->
ifString
(
)
->
then
(
fn
(
$v
)
=>
preg_split
(
'/\s*,\s*/',
$v
)
)
->
end
(
)
->
requiresAtLeastOneElement
(
)
->
prototype
(
'scalar'
)
->
end
(
)
->
end
(
)
->
scalarNode
(
'uid_key'
)
->
defaultValue
(
'sAMAccountName'
)
->
end
(
)
->
scalarNode
(
'filter'
)
->
defaultValue
(
'({uid_key}={username})'
)
->
end
(
)
->
scalarNode
(
'password_attribute'
)
->
defaultNull
(
)
->
end
(
)
->
end
(
)
;
class
Placeholders
implements
ConfigurationInterface
{
public
function
getConfigTreeBuilder
(
)
: TreeBuilder
{
$tb
=
new
TreeBuilder
(
'placeholders'
)
;
$rootNode
=
$tb
->
getRootNode
(
)
;
$rootNode
->
children
(
)
->
booleanNode
(
'enabled'
)
->
defaultFalse
(
)
->
end
(
)
->
floatNode
(
'favorite_float'
)
->
end
(
)
->
arrayNode
(
'good_integers'
)
->
integerPrototype
(
)
->
end
(
)
->
end
(
)
->
end
(
)
;
return
$tb
;
}
}
->
replaceArgument
(
2,
$config
[
'claim'
]
)
;
}
public
function
getKey
(
)
: string
{
return
'oidc_user_info';
}
public
function
addConfiguration
(
NodeBuilder
$node
)
: void
{
$node
->
arrayNode
(
$this
->
getKey
(
)
)
->
fixXmlConfig
(
$this
->
getKey
(
)
)
->
beforeNormalization
(
)
->
ifString
(
)
->
then
(
fn
(
$v
)
=>
[
'claim' => 'sub', 'base_uri' =>
$v
]
)
->
end
(
)
->
children
(
)
->
scalarNode
(
'base_uri'
)
->
info
(
'Base URI of the userinfo endpoint on the OIDC server.'
)
->
isRequired
(
)
->
cannotBeEmpty
(
)
->
end
(
)
]
,
$tree
->
merge
(
$a
,
$b
)
)
;
}
public
function
testPrototypeWithoutAKeyAttribute
(
)
{
$tb
=
new
TreeBuilder
(
'root', 'array'
)
;
$tree
=
$tb
->
getRootNode
(
)
->
children
(
)
->
arrayNode
(
'append_elements'
)
->
prototype
(
'scalar'
)
->
end
(
)
->
end
(
)
->
end
(
)
->
end
(
)
->
buildTree
(
)
;
$a
=
[
'append_elements' =>
[
'a', 'b'
]
,
]
;
use
Symfony\Component\Config\Definition\Builder\TreeBuilder;
use
Symfony\Component\Config\Definition\ConfigurationInterface;
class
ArrayExtraKeys
implements
ConfigurationInterface
{
public
function
getConfigTreeBuilder
(
)
: TreeBuilder
{
$tb
=
new
TreeBuilder
(
'array_extra_keys'
)
;
$rootNode
=
$tb
->
getRootNode
(
)
;
$rootNode
->
children
(
)
->
arrayNode
(
'foo'
)
->
ignoreExtraKeys
(
false
)
->
children
(
)
->
scalarNode
(
'baz'
)
->
end
(
)
->
scalarNode
(
'qux'
)
->
end
(
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'bar'
)
->
prototype
(
'array'
)
->
ignoreExtraKeys
(
false
)
->
children
(
)
->
scalarNode
(
'corge'
)
->
end
(
)
->
cannotBeEmpty
(
)
->
integerPrototype
(
)
;
$node
->
getNode
(
)
->
finalize
(
[
]
)
;
}
public
function
testSetDeprecated
(
)
{
$node
=
new
ArrayNodeDefinition
(
'root'
)
;
$node
->
children
(
)
->
arrayNode
(
'foo'
)
->
setDeprecated
(
'vendor/package', '1.1', 'The "%path%" node is deprecated.'
)
->
end
(
)
->
end
(
)
;
$deprecatedNode
=
$node
->
getNode
(
)
->
getChildren
(
)
[
'foo'
]
;
$this
->
assertTrue
(
$deprecatedNode
->
isDeprecated
(
)
)
;
$deprecation
=
$deprecatedNode
->
getDeprecation
(
$deprecatedNode
->
getName
(
)
,
$deprecatedNode
->
getPath
(
)
)
;
$this
->
assertSame
(
'The "root.foo" node is deprecated.',
$deprecation
[
'message'
]
)
;
$this
->
assertSame
(
'vendor/package',
$deprecation
[
'package'
]
)
;
$this
->
assertSame
(
'1.1',
$deprecation
[
'version'
]
)
;
}
$this
->defaultFailureHandlerOptions =
[
]
;
$this
->defaultSuccessHandlerOptions =
[
]
;
}
public
function
addConfiguration
(
NodeDefinition
$node
)
: void
{
parent::
addConfiguration
(
$node
)
;
$builder
=
$node
->
children
(
)
;
$builder
->
scalarNode
(
'realm'
)
->
defaultNull
(
)
->
end
(
)
->
arrayNode
(
'token_extractors'
)
->
fixXmlConfig
(
'token_extractors'
)
->
beforeNormalization
(
)
->
ifString
(
)
->
then
(
fn
(
$v
)
=>
[
$v
]
)
->
end
(
)
->
cannotBeEmpty
(
)
->
defaultValue
(
[
'security.access_token_extractor.header',
]
)
->
scalarPrototype
(
)
->
end
(
)
->
end
(
)
;
class
TreeBuilderTest
extends
TestCase
{
public
function
testUsingACustomNodeBuilder
(
)
{
$builder
=
new
TreeBuilder
(
'custom', 'array',
new
CustomNodeBuilder
(
)
)
;
$nodeBuilder
=
$builder
->
getRootNode
(
)
->
children
(
)
;
$this
->
assertInstanceOf
(
CustomNodeBuilder::
class
,
$nodeBuilder
)
;
$nodeBuilder
=
$nodeBuilder
->
arrayNode
(
'deeper'
)
->
children
(
)
;
$this
->
assertInstanceOf
(
CustomNodeBuilder::
class
,
$nodeBuilder
)
;
}
public
function
testOverrideABuiltInNodeType
(
)
{
$builder
=
new
TreeBuilder
(
'override', 'array',
new
CustomNodeBuilder
(
)
)
;
$definition
=
$builder
->
getRootNode
(
)
->
children
(
)
->
variableNode
(
'variable'
)
;
$this
->
assertInstanceOf
(
VariableNodeDefinition::
class
,
$definition
)
;
}
use
Symfony\Component\Config\Definition\Builder\TreeBuilder;
use
Symfony\Component\Config\Definition\ConfigurationInterface;
class
AddToList
implements
ConfigurationInterface
{
public
function
getConfigTreeBuilder
(
)
: TreeBuilder
{
$tb
=
new
TreeBuilder
(
'add_to_list'
)
;
$rootNode
=
$tb
->
getRootNode
(
)
;
$rootNode
->
children
(
)
->
arrayNode
(
'translator'
)
->
fixXmlConfig
(
'fallback'
)
->
fixXmlConfig
(
'source'
)
->
children
(
)
->
arrayNode
(
'fallbacks'
)
->
prototype
(
'scalar'
)
->
end
(
)
->
defaultValue
(
[
]
)
->
end
(
)
->
arrayNode
(
'sources'
)
->
useAttributeAsKey
(
'source_class'
)
->
prototype
(
'scalar'
)
->
end
(
)
->
end
(
)
return
'memory';
}
/** * @return void */
public
function
addConfiguration
(
NodeDefinition
$node
)
{
$node
->
fixXmlConfig
(
'user'
)
->
children
(
)
->
arrayNode
(
'users'
)
->
useAttributeAsKey
(
'identifier'
)
->
normalizeKeys
(
false
)
->
prototype
(
'array'
)
->
children
(
)
->
scalarNode
(
'password'
)
->
defaultNull
(
)
->
end
(
)
->
arrayNode
(
'roles'
)
->
beforeNormalization
(
)
->
ifString
(
)
->
then
(
fn
(
$v
)
=>
preg_split
(
'/\s*,\s*/',
$v
)
)
->
end
(
)
->
prototype
(
'scalar'
)
->
end
(
)
->
end
(
)
->
end
(
)
->
end
(
)
$rootNode
->
children
(
)
->
scalarNode
(
'access_denied_url'
)
->
defaultNull
(
)
->
example
(
'/foo/error403'
)
->
end
(
)
->
enumNode
(
'session_fixation_strategy'
)
->
values
(
[
SessionAuthenticationStrategy::NONE, SessionAuthenticationStrategy::MIGRATE, SessionAuthenticationStrategy::INVALIDATE
]
)
->
defaultValue
(
SessionAuthenticationStrategy::MIGRATE
)
->
end
(
)
->
booleanNode
(
'hide_user_not_found'
)
->
defaultTrue
(
)
->
end
(
)
->
booleanNode
(
'erase_credentials'
)
->
defaultTrue
(
)
->
end
(
)
->
booleanNode
(
'enable_authenticator_manager'
)
->
setDeprecated
(
'symfony/security-bundle', '6.2', 'The "%node%" option at "%path%" is deprecated.'
)
->
defaultTrue
(
)
->
end
(
)
->
arrayNode
(
'access_decision_manager'
)
->
addDefaultsIfNotSet
(
)
->
children
(
)
->
enumNode
(
'strategy'
)
->
values
(
$this
->
getAccessDecisionStrategies
(
)
)
->
end
(
)
->
scalarNode
(
'service'
)
->
end
(
)
->
scalarNode
(
'strategy_service'
)
->
end
(
)
->
booleanNode
(
'allow_if_all_abstain'
)
->
defaultFalse
(
)
->
end
(
)
->
booleanNode
(
'allow_if_equal_granted_denied'
)
->
defaultTrue
(
)
->
end
(
)
->
end
(
)
->
validate
(
)
#[Package('storefront')]
class
Configuration
implements
ConfigurationInterface
{
public
function
getConfigTreeBuilder
(
)
: TreeBuilder
{
$treeBuilder
=
new
TreeBuilder
(
'storefront'
)
;
$rootNode
=
$treeBuilder
->
getRootNode
(
)
;
$rootNode
->
children
(
)
->
arrayNode
(
'reverse_proxy'
)
->
children
(
)
->
booleanNode
(
'enabled'
)
->
end
(
)
->
booleanNode
(
'use_varnish_xkey'
)
->
defaultFalse
(
)
->
end
(
)
->
arrayNode
(
'hosts'
)
->
performNoDeepMerging
(
)
->
scalarPrototype
(
)
->
end
(
)
->
end
(
)
->
integerNode
(
'max_parallel_invalidations'
)
->
defaultValue
(
2
)
->
end
(
)
->
scalarNode
(
'redis_url'
)
->
end
(
)
->
scalarNode
(
'ban_method'
)
->
defaultValue
(
'BAN'
)
->
end
(
)
->
arrayNode
(
'ban_headers'
)
->
performNoDeepMerging
(
)
->
defaultValue
(
[
]
)
->
scalarPrototype
(
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'purge_all'
)
->
children
(
)
->
scalarNode
(
'ban_method'
)
->
defaultValue
(
'BAN'
)
->
end
(
)
$this
->
addTwigFormatOptions
(
$rootNode
)
;
$this
->
addMailerSection
(
$rootNode
)
;
return
$treeBuilder
;
}
private
function
addFormThemesSection
(
ArrayNodeDefinition
$rootNode
)
: void
{
$rootNode
->
fixXmlConfig
(
'form_theme'
)
->
children
(
)
->
arrayNode
(
'form_themes'
)
->
addDefaultChildrenIfNoneSet
(
)
->
prototype
(
'scalar'
)
->
defaultValue
(
'form_div_layout.html.twig'
)
->
end
(
)
->
example
(
[
'@My/form.html.twig'
]
)
->
validate
(
)
->
ifTrue
(
fn
(
$v
)
=> !\
in_array
(
'form_div_layout.html.twig',
$v
)
)
->
then
(
fn
(
$v
)
=>
array_merge
(
[
'form_div_layout.html.twig'
]
,
$v
)
)
->
end
(
)
->
end
(
)
->
end
(
)
;
}
->
append
(
$this
->
createStockSection
(
)
)
->
end
(
)
;
return
$treeBuilder
;
}
private
function
createFilesystemSection
(
)
: ArrayNodeDefinition
{
$rootNode
=
(
new
TreeBuilder
(
'filesystem'
)
)
->
getRootNode
(
)
;
$rootNode
->
children
(
)
->
arrayNode
(
'private'
)
->
children
(
)
->
scalarNode
(
'type'
)
->
end
(
)
->
scalarNode
(
'visibility'
)
->
end
(
)
->
variableNode
(
'config'
)
->
end
(
)
->
end
(
)
->
end
(
)
->
arrayNode
(
'public'
)
->
performNoDeepMerging
(
)
->
children
(
)
->
scalarNode
(
'type'
)
->
end
(
)
->
scalarNode
(
'url'
)
->
end
(
)