Skip to content

allow between to be an array of strings #864

Merged
merged 3 commits into from Jan 25, 2013
View
229 lib/Cake/Test/Case/View/Helper/FormHelperTest.php
@@ -35,13 +35,6 @@
class ContactTestController extends Controller {
/**
- * name property
- *
- * @var string 'ContactTest'
- */
- public $name = 'ContactTest';
-
-/**
* uses property
*
* @var mixed null
@@ -58,27 +51,13 @@ class ContactTestController extends Controller {
class Contact extends CakeTestModel {
/**
- * primaryKey property
- *
- * @var string 'id'
- */
- public $primaryKey = 'id';
-
-/**
* useTable property
*
* @var bool false
*/
public $useTable = false;
/**
- * name property
- *
- * @var string 'Contact'
- */
- public $name = 'Contact';
-
-/**
* Default schema
*
* @var array
@@ -162,13 +141,6 @@ class ContactTagsContact extends CakeTestModel {
public $useTable = false;
/**
- * name property
- *
- * @var string 'Contact'
- */
- public $name = 'ContactTagsContact';
-
-/**
* Default schema
*
* @var array
@@ -207,13 +179,6 @@ class ContactNonStandardPk extends Contact {
public $primaryKey = 'pk';
/**
- * name property
- *
- * @var string 'ContactNonStandardPk'
- */
- public $name = 'ContactNonStandardPk';
-
-/**
* schema method
*
* @return void
@@ -271,20 +236,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
*
* @var array
@@ -326,20 +277,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
*
* @var array
@@ -389,27 +326,13 @@ public function beforeValidate($options = array()) {
class ValidateUser extends CakeTestModel {
/**
- * primaryKey property
- *
- * @var string 'id'
- */
- public $primaryKey = 'id';
-
-/**
* useTable property
*
* @var bool false
*/
public $useTable = false;
/**
- * name property
- *
- * @var string 'ValidateUser'
- */
- public $name = 'ValidateUser';
-
-/**
* hasOne property
*
* @var array
@@ -453,13 +376,6 @@ public function beforeValidate($options = array()) {
class ValidateProfile extends CakeTestModel {
/**
- * primaryKey property
- *
- * @var string 'id'
- */
- public $primaryKey = 'id';
-
-/**
* useTable property
*
* @var bool false
@@ -481,13 +397,6 @@ class ValidateProfile extends CakeTestModel {
);
/**
- * name property
- *
- * @var string 'ValidateProfile'
- */
- public $name = 'ValidateProfile';
-
-/**
* hasOne property
*
* @var array
@@ -527,27 +436,13 @@ public function beforeValidate($options = array()) {
class ValidateItem extends CakeTestModel {
/**
- * primaryKey property
- *
- * @var string 'id'
- */
- public $primaryKey = 'id';
-
-/**
* useTable property
*
* @var bool false
*/
public $useTable = false;
/**
- * name property
- *
- * @var string 'ValidateItem'
- */
- public $name = 'ValidateItem';
-
-/**
* schema property
*
* @var array
@@ -591,25 +486,12 @@ public function beforeValidate($options = array()) {
class TestMail extends CakeTestModel {
/**
- * primaryKey property
- *
- * @var string 'id'
- */
- public $primaryKey = 'id';
-
-/**
* useTable property
*
* @var bool false
*/
public $useTable = false;
-/**
- * name property
- *
- * @var string 'TestMail'
- */
- public $name = 'TestMail';
}
/**
@@ -3534,6 +3416,51 @@ public function testRadio() {
'/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);
}
/**
@@ -3607,6 +3534,72 @@ public function testRadioDisabled() {
'/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'
+ );
}
/**
View
9 lib/Cake/View/Helper/FormHelper.php
@@ -1303,7 +1303,8 @@ public function checkbox($fieldName, $options = array()) {
* ### 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
@@ -1388,6 +1389,9 @@ public function radio($fieldName, $options = array(), $attributes = array()) {
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' => '')),
@@ -1405,6 +1409,9 @@ public function radio($fieldName, $options = array(), $attributes = array()) {
}
$out = $hidden . implode($separator, $out);
+ if (is_array($between)) {
+ $between = '';
+ }
if ($legend) {
$out = $this->Html->useTag('fieldset', '', $this->Html->useTag('legend', $legend) . $between . $out);
}
Something went wrong with that request. Please try again.