TYPO3 CMS  TYPO3_6-2
RadioViewHelper.php
Go to the documentation of this file.
1 <?php
3 
4 /* *
5  * This script is backported from the TYPO3 Flow package "TYPO3.Fluid". *
6  * *
7  * It is free software; you can redistribute it and/or modify it under *
8  * the terms of the GNU Lesser General Public License, either version 3 *
9  * of the License, or (at your option) any later version. *
10  * *
11  * The TYPO3 project - inspiring people to share! *
12  * */
13 
47 
51  protected $tagName = 'input';
52 
59  public function initializeArguments() {
60  parent::initializeArguments();
61  $this->registerTagAttribute('disabled', 'string', 'Specifies that the input element should be disabled when the page loads');
62  $this->registerArgument('errorClass', 'string', 'CSS class to set if there are errors for this view helper', FALSE, 'f3-form-error');
63  $this->overrideArgument('value', 'string', 'Value of input tag. Required for radio buttons', TRUE);
65  }
66 
74  public function render($checked = NULL) {
75  $this->tag->addAttribute('type', 'radio');
76 
77  $nameAttribute = $this->getName();
78  $valueAttribute = $this->getValue();
79  if ($checked === NULL && $this->isObjectAccessorMode()) {
80  if ($this->hasMappingErrorOccurred()) {
81  $propertyValue = $this->getLastSubmittedFormData();
82  } else {
83  $propertyValue = $this->getPropertyValue();
84  }
85 
86  // no type-safe comparison by intention
87  $checked = $propertyValue == $valueAttribute;
88  }
89 
90  $this->registerFieldNameForFormTokenGeneration($nameAttribute);
91  $this->tag->addAttribute('name', $nameAttribute);
92  $this->tag->addAttribute('value', $valueAttribute);
93  if ($checked) {
94  $this->tag->addAttribute('checked', 'checked');
95  }
96 
97  $this->setErrorClassAttribute();
98 
99  return $this->tag->render();
100  }
101 }
registerTagAttribute($name, $type, $description, $required=FALSE, $default=NULL)
registerArgument($name, $type, $description, $required=FALSE, $defaultValue=NULL)
overrideArgument($name, $type, $description, $required=FALSE, $defaultValue=NULL)