Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
13 / 13 |
FormElementHelper | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
8 | |
100.00% |
13 / 13 |
getElementByName | |
100.00% |
1 / 1 |
4 | |
100.00% |
6 / 6 |
|||
getElementTitle | |
100.00% |
1 / 1 |
4 | |
100.00% |
7 / 7 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Form\FormElementHelper. | |
*/ | |
namespace Drupal\Core\Form; | |
use Drupal\Core\Render\Element; | |
/** | |
* Provides common functionality for form elements. | |
*/ | |
class FormElementHelper { | |
/** | |
* Retrieves a form element. | |
* | |
* @param string $name | |
* The name of the form element. If the #parents property of your form | |
* element is ['foo', 'bar', 'baz'] then the name is 'foo][bar][baz'. | |
* @param array $form | |
* An associative array containing the structure of the form. | |
* | |
* @return array | |
* The form element. | |
*/ | |
public static function getElementByName($name, array $form) { | |
foreach (Element::children($form) as $key) { | |
if (implode('][', $form[$key]['#parents']) === $name) { | |
return $form[$key]; | |
} | |
elseif ($element = static::getElementByName($name, $form[$key])) { | |
return $element; | |
} | |
} | |
return []; | |
} | |
/** | |
* Returns the title for the element. | |
* | |
* If the element has no title, this will recurse through all children of the | |
* element until a title is found. | |
* | |
* @param array $element | |
* An associative array containing the properties of the form element. | |
* | |
* @return string | |
* The title of the element, or an empty string if none is found. | |
*/ | |
public static function getElementTitle(array $element) { | |
$title = ''; | |
if (isset($element['#title'])) { | |
$title = $element['#title']; | |
} | |
else { | |
foreach (Element::children($element) as $key) { | |
if ($title = static::getElementTitle($element[$key])) { | |
break; | |
} | |
} | |
} | |
return $title; | |
} | |
} |