|
TYPO3 API
SVNRelease
|
00001 <?php 00002 00003 /* * 00004 * This script belongs to the FLOW3 package "Fluid". * 00005 * * 00006 * It is free software; you can redistribute it and/or modify it under * 00007 * the terms of the GNU Lesser General Public License as published by the * 00008 * Free Software Foundation, either version 3 of the License, or (at your * 00009 * option) any later version. * 00010 * * 00011 * This script is distributed in the hope that it will be useful, but * 00012 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- * 00013 * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser * 00014 * General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU Lesser General Public * 00017 * License along with the script. * 00018 * If not, see http://www.gnu.org/licenses/lgpl.html * 00019 * * 00020 * The TYPO3 project - inspiring people to share! * 00021 * */ 00022 00023 /** 00024 * View Helper which creates a simple radio button (<input type="radio">). 00025 * 00026 * = Examples = 00027 * 00028 * <code title="Example"> 00029 * <f:form.radio name="myRadioButton" value="someValue" /> 00030 * </code> 00031 * <output> 00032 * <input type="radio" name="myRadioButton" value="someValue" /> 00033 * </output> 00034 * 00035 * <code title="Preselect"> 00036 * <f:form.radio name="myRadioButton" value="someValue" checked="{object.value} == 5" /> 00037 * </code> 00038 * <output> 00039 * <input type="radio" name="myRadioButton" value="someValue" checked="checked" /> 00040 * (depending on $object) 00041 * </output> 00042 * 00043 * <code title="Bind to object property"> 00044 * <f:form.radio property="newsletter" value="1" /> yes 00045 * <f:form.radio property="newsletter" value="0" /> no 00046 * </code> 00047 * <output> 00048 * <input type="radio" name="user[newsletter]" value="1" checked="checked" /> yes 00049 * <input type="radio" name="user[newsletter]" value="0" /> no 00050 * (depending on property "newsletter") 00051 * </output> 00052 * 00053 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later 00054 * @api 00055 */ 00056 class Tx_Fluid_ViewHelpers_Form_RadioViewHelper extends Tx_Fluid_ViewHelpers_Form_AbstractFormFieldViewHelper { 00057 00058 /** 00059 * @var string 00060 */ 00061 protected $tagName = 'input'; 00062 00063 /** 00064 * Initialize the arguments. 00065 * 00066 * @return void 00067 * @author Bastian Waidelich <bastian@typo3.org> 00068 * @api 00069 */ 00070 public function initializeArguments() { 00071 parent::initializeArguments(); 00072 $this->registerTagAttribute('disabled', 'string', 'Specifies that the input element should be disabled when the page loads'); 00073 $this->registerArgument('errorClass', 'string', 'CSS class to set if there are errors for this view helper', FALSE, 'f3-form-error'); 00074 $this->overrideArgument('value', 'string', 'Value of input tag. Required for radio buttons', TRUE); 00075 $this->registerUniversalTagAttributes(); 00076 } 00077 00078 /** 00079 * Renders the checkbox. 00080 * 00081 * @param boolean $checked Specifies that the input element should be preselected 00082 * 00083 * @return string 00084 * @author Bastian Waidelich <bastian@typo3.org> 00085 * @api 00086 */ 00087 public function render($checked = NULL) { 00088 $this->tag->addAttribute('type', 'radio'); 00089 00090 $nameAttribute = $this->getName(); 00091 $valueAttribute = $this->getValue(); 00092 if ($checked === NULL && $this->isObjectAccessorMode()) { 00093 $propertyValue = $this->getPropertyValue(); 00094 // no type-safe comparisation by intention 00095 $checked = $propertyValue == $valueAttribute; 00096 } 00097 00098 $this->registerFieldNameForFormTokenGeneration($nameAttribute); 00099 $this->tag->addAttribute('name', $nameAttribute); 00100 $this->tag->addAttribute('value', $valueAttribute); 00101 if ($checked) { 00102 $this->tag->addAttribute('checked', 'checked'); 00103 } 00104 00105 $this->setErrorClassAttribute(); 00106 00107 return $this->tag->render(); 00108 } 00109 } 00110 00111 ?>
1.8.0