diff --git a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php index b4879282a..61fe1de9b 100644 --- a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php @@ -34,13 +34,6 @@ App::uses('Router', 'Routing'); */ class ContactTestController extends Controller { -/** - * name property - * - * @var string 'ContactTest' - */ - public $name = 'ContactTest'; - /** * uses property * @@ -57,13 +50,6 @@ class ContactTestController extends Controller { */ class Contact extends CakeTestModel { -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - /** * useTable property * @@ -71,13 +57,6 @@ class Contact extends CakeTestModel { */ public $useTable = false; -/** - * name property - * - * @var string 'Contact' - */ - public $name = 'Contact'; - /** * Default schema * @@ -170,13 +149,6 @@ class ContactTagsContact extends CakeTestModel { */ public $useTable = false; -/** - * name property - * - * @var string 'Contact' - */ - public $name = 'ContactTagsContact'; - /** * Default schema * @@ -215,13 +187,6 @@ class ContactNonStandardPk extends Contact { */ public $primaryKey = 'pk'; -/** - * name property - * - * @var string 'ContactNonStandardPk' - */ - public $name = 'ContactNonStandardPk'; - /** * schema method * @@ -279,20 +244,6 @@ class UserForm extends CakeTestModel { */ public $useTable = false; -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - -/** - * name property - * - * @var string 'UserForm' - */ - public $name = 'UserForm'; - /** * hasMany property * @@ -334,20 +285,6 @@ class OpenidUrl extends CakeTestModel { */ public $useTable = false; -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - -/** - * name property - * - * @var string 'OpenidUrl' - */ - public $name = 'OpenidUrl'; - /** * belongsTo property * @@ -397,13 +334,6 @@ class OpenidUrl extends CakeTestModel { */ class ValidateUser extends CakeTestModel { -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - /** * useTable property * @@ -411,13 +341,6 @@ class ValidateUser extends CakeTestModel { */ public $useTable = false; -/** - * name property - * - * @var string 'ValidateUser' - */ - public $name = 'ValidateUser'; - /** * hasOne property * @@ -461,13 +384,6 @@ class ValidateUser extends CakeTestModel { */ class ValidateProfile extends CakeTestModel { -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - /** * useTable property * @@ -489,13 +405,6 @@ class ValidateProfile extends CakeTestModel { 'updated' => array('type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null) ); -/** - * name property - * - * @var string 'ValidateProfile' - */ - public $name = 'ValidateProfile'; - /** * hasOne property * @@ -535,13 +444,6 @@ class ValidateProfile extends CakeTestModel { */ class ValidateItem extends CakeTestModel { -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - /** * useTable property * @@ -549,13 +451,6 @@ class ValidateItem extends CakeTestModel { */ public $useTable = false; -/** - * name property - * - * @var string 'ValidateItem' - */ - public $name = 'ValidateItem'; - /** * schema property * @@ -599,13 +494,6 @@ class ValidateItem extends CakeTestModel { */ class TestMail extends CakeTestModel { -/** - * primaryKey property - * - * @var string 'id' - */ - public $primaryKey = 'id'; - /** * useTable property * @@ -613,12 +501,6 @@ class TestMail extends CakeTestModel { */ public $useTable = false; -/** - * name property - * - * @var string 'TestMail' - */ - public $name = 'TestMail'; } /** @@ -3575,6 +3457,51 @@ class FormHelperTest extends CakeTestCase { '/fieldset' ); $this->assertTags($result, $expected); + + $result = $this->Form->radio( + 'Model.field', + array('option A', 'option B', 'option C'), + array('separator' => '--separator--', 'between' => array('between A', 'between B', 'between C')) + ); + + $expected = array( + 'fieldset' => array(), + 'legend' => array(), + 'Field', + '/legend', + 'input' => array( + 'type' => 'hidden', 'name' => 'data[Model][field]', + 'value' => '', 'id' => 'ModelField_' + ), + array('input' => array( + 'type' => 'radio', 'name' => 'data[Model][field]', + 'value' => '0', 'id' => 'ModelField0' + )), + array('label' => array('for' => 'ModelField0')), + 'option A', + '/label', + 'between A', + '--separator--', + array('input' => array( + 'type' => 'radio', 'name' => 'data[Model][field]', + 'value' => '1', 'id' => 'ModelField1' + )), + array('label' => array('for' => 'ModelField1')), + 'option B', + '/label', + 'between B', + '--separator--', + array('input' => array( + 'type' => 'radio', 'name' => 'data[Model][field]', + 'value' => '2', 'id' => 'ModelField2' + )), + array('label' => array('for' => 'ModelField2')), + 'option C', + '/label', + 'between C', + '/fieldset' + ); + $this->assertTags($result, $expected); } /** @@ -3729,6 +3656,72 @@ class FormHelperTest extends CakeTestCase { '/fieldset' ); $this->assertTags($result, $expected); + + $result = $this->Form->input('Model.field', array( + 'options' => array('1' => 'first', '2' => 'second'), + 'type' => 'radio', + 'before' => '--before--', + 'after' => '--after--', + 'separator' => '--separator--', + 'between' => array('--between first--', '--between second--') + )); + + $expected = array( + 'div' => array('class' => 'input radio'), + '--before--', + 'fieldset' => array(), + 'legend' => array(), + 'Field', + '/legend', + array('input' => array('type' => 'hidden', 'name' => 'data[Model][field]', 'id' => 'ModelField_', 'value' => '')), + array('input' => array('type' => 'radio', 'name' => 'data[Model][field]', 'value' => '1', 'id' => 'ModelField1')), + array('label' => array('for' => 'ModelField1')), + 'first', + '/label', + '--between first--', + '--separator--', + array('input' => array('type' => 'radio', 'name' => 'data[Model][field]', 'value' => '2', 'id' => 'ModelField2')), + array('label' => array('for' => 'ModelField2')), + 'second', + '/label', + '--between second--', + '/fieldset', + '--after--', + '/div' + ); + $this->assertTags($result, $expected); + + $result = $this->Form->input('Model.field', array( + 'options' => array('1' => 'first', '2' => 'second'), + 'type' => 'radio', + 'before' => '--before--', + 'after' => '--after--', + 'separator' => '--separator--', + 'between' => array('--between first--') + )); + + $expected = array( + 'div' => array('class' => 'input radio'), + '--before--', + 'fieldset' => array(), + 'legend' => array(), + 'Field', + '/legend', + array('input' => array('type' => 'hidden', 'name' => 'data[Model][field]', 'id' => 'ModelField_', 'value' => '')), + array('input' => array('type' => 'radio', 'name' => 'data[Model][field]', 'value' => '1', 'id' => 'ModelField1')), + array('label' => array('for' => 'ModelField1')), + 'first', + '/label', + '--between first--', + '--separator--', + array('input' => array('type' => 'radio', 'name' => 'data[Model][field]', 'value' => '2', 'id' => 'ModelField2')), + array('label' => array('for' => 'ModelField2')), + 'second', + '/label', + '/fieldset', + '--after--', + '/div' + ); } /** diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index c823a27ee..5a85821e8 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -1417,7 +1417,8 @@ class FormHelper extends AppHelper { * ### Attributes: * * - `separator` - define the string in between the radio buttons - * - `between` - the string between legend and input set + * - `between` - the string between legend and input set or array of strings to insert + * strings between each input block * - `legend` - control whether or not the widget set has a fieldset & legend * - `value` - indicate a value that is should be checked * - `label` - boolean to indicate whether or not labels for widgets show be displayed @@ -1506,6 +1507,9 @@ class FormHelper extends AppHelper { if ($label) { $optTitle = $this->Html->useTag('label', $tagName, '', $optTitle); } + if (is_array($between)) { + $optTitle .= array_shift($between); + } $allOptions = array_merge($attributes, $optionsHere); $out[] = $this->Html->useTag('radio', $attributes['name'], $tagName, array_diff_key($allOptions, array('name' => '', 'type' => '', 'id' => '')), @@ -1523,6 +1527,9 @@ class FormHelper extends AppHelper { } $out = $hidden . implode($separator, $out); + if (is_array($between)) { + $between = ''; + } if ($legend) { $out = $this->Html->useTag('fieldset', '', $this->Html->useTag('legend', $legend) . $between . $out); }