Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
9bb4f4cf
Commit
9bb4f4cf
authored
Nov 21, 2014
by
alexpott
Browse files
Issue
#2371853
by tim.plunkett, larowlan: Add more helper methods around temporary FAPI storage
parent
0d720363
Changes
5
Hide whitespace changes
Inline
Side-by-side
core/lib/Drupal/Core/Condition/ConditionPluginBase.php
View file @
9bb4f4cf
...
...
@@ -44,8 +44,7 @@ public function isNegated() {
* {@inheritdoc}
*/
public
function
buildConfigurationForm
(
array
$form
,
FormStateInterface
$form_state
)
{
$temporary
=
$form_state
->
getTemporary
();
$contexts
=
isset
(
$temporary
[
'gathered_contexts'
])
?
$temporary
[
'gathered_contexts'
]
:
[];
$contexts
=
$form_state
->
getTemporaryValue
(
'gathered_contexts'
)
?:
[];
$form
[
'context_mapping'
]
=
$this
->
addContextAssignmentElement
(
$this
,
$contexts
);
$form
[
'negate'
]
=
array
(
'#type'
=>
'checkbox'
,
...
...
core/lib/Drupal/Core/Form/FormState.php
View file @
9bb4f4cf
...
...
@@ -354,7 +354,7 @@ class FormState implements FormStateInterface {
*
* @var array
*/
protected
$temporary
;
protected
$temporary
=
[]
;
/**
* Tracks if the form has finished validation.
...
...
@@ -711,6 +711,31 @@ public function getTemporary() {
return
$this
->
temporary
;
}
/**
* {@inheritdoc}
*/
public
function
&
getTemporaryValue
(
$key
)
{
$value
=
&
NestedArray
::
getValue
(
$this
->
temporary
,
(
array
)
$key
);
return
$value
;
}
/**
* {@inheritdoc}
*/
public
function
setTemporaryValue
(
$key
,
$value
)
{
NestedArray
::
setValue
(
$this
->
temporary
,
(
array
)
$key
,
$value
,
TRUE
);
return
$this
;
}
/**
* {@inheritdoc}
*/
public
function
hasTemporaryValue
(
$key
)
{
$exists
=
NULL
;
NestedArray
::
getValue
(
$this
->
temporary
,
(
array
)
$key
,
$exists
);
return
$exists
;
}
/**
* {@inheritdoc}
*/
...
...
core/lib/Drupal/Core/Form/FormStateInterface.php
View file @
9bb4f4cf
...
...
@@ -933,6 +933,47 @@ public function setTemporary(array $temporary);
*/
public
function
getTemporary
();
/**
* Gets an arbitrary value from temporary storage.
*
* @param string|array $key
* Properties are often stored as multi-dimensional associative arrays. If
* $key is a string, it will return $temporary[$key]. If $key is an array,
* each element of the array will be used as a nested key. If
* $key = ['foo', 'bar'] it will return $temporary['foo']['bar'].
*
* @return mixed
* A reference to the value for that key, or NULL if the property does
* not exist.
*/
public
function
&
getTemporaryValue
(
$key
);
/**
* Sets an arbitrary value in temporary storage.
*
* @param string|array $key
* Properties are often stored as multi-dimensional associative arrays. If
* $key is a string, it will use $temporary[$key] = $value. If $key is an
* array, each element of the array will be used as a nested key. If
* $key = ['foo', 'bar'] it will use $temporary['foo']['bar'] = $value.
* @param mixed $value
* The value to set.
*
* @return $this
*/
public
function
setTemporaryValue
(
$key
,
$value
);
/**
* Determines if a temporary value is present.
*
* @param string $key
* Properties are often stored as multi-dimensional associative arrays. If
* $key is a string, it will return isset($temporary[$key]). If $key is an
* array, each element of the array will be used as a nested key. If
* $key = ['foo', 'bar'] it will return isset($temporary['foo']['bar']).
*/
public
function
hasTemporaryValue
(
$key
);
/**
* Sets the form element that triggered submission.
*
...
...
core/modules/block/src/BlockForm.php
View file @
9bb4f4cf
...
...
@@ -104,9 +104,7 @@ public function form(array $form, FormStateInterface $form_state) {
// Store the gathered contexts in the form state for other objects to use
// during form building.
$temporary
=
$form_state
->
getTemporary
();
$temporary
[
'gathered_contexts'
]
=
$this
->
dispatcher
->
dispatch
(
BlockEvents
::
ADMINISTRATIVE_CONTEXT
,
new
BlockContextEvent
())
->
getContexts
();
$form_state
->
setTemporary
(
$temporary
);
$form_state
->
setTemporaryValue
(
'gathered_contexts'
,
$this
->
dispatcher
->
dispatch
(
BlockEvents
::
ADMINISTRATIVE_CONTEXT
,
new
BlockContextEvent
())
->
getContexts
());
$form
[
'#tree'
]
=
TRUE
;
$form
[
'settings'
]
=
$entity
->
getPlugin
()
->
buildConfigurationForm
(
array
(),
$form_state
);
...
...
core/tests/Drupal/Tests/Core/Form/FormStateTest.php
View file @
9bb4f4cf
...
...
@@ -514,6 +514,22 @@ public function providerTestIsMethodType() {
return
$data
;
}
/**
* @covers ::getTemporaryValue
* @covers ::hasTemporaryValue
* @covers ::setTemporaryValue
*/
public
function
testTemporaryValue
()
{
$form_state
=
New
FormState
();
$this
->
assertFalse
(
$form_state
->
hasTemporaryValue
(
'rainbow_sparkles'
));
$form_state
->
setTemporaryValue
(
'rainbow_sparkles'
,
'yes please'
);
$this
->
assertSame
(
$form_state
->
getTemporaryValue
(
'rainbow_sparkles'
),
'yes please'
);
$this
->
assertTrue
(
$form_state
->
hasTemporaryValue
(
'rainbow_sparkles'
),
TRUE
);
$form_state
->
setTemporaryValue
(
array
(
'rainbow_sparkles'
,
'magic_ponies'
),
'yes please'
);
$this
->
assertSame
(
$form_state
->
getTemporaryValue
(
array
(
'rainbow_sparkles'
,
'magic_ponies'
)),
'yes please'
);
$this
->
assertTrue
(
$form_state
->
hasTemporaryValue
(
array
(
'rainbow_sparkles'
,
'magic_ponies'
)),
TRUE
);
}
}
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment