Skip to content

Commit edfe997

Browse files
committed
[widget] Fix array to string convertion when using renderId with an array as value
1 parent d15188b commit edfe997

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

lib/widget/sfWidgetForm.class.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public function generateId($name, $value = null)
244244
// check to see if we have an array variable for a field name
245245
if (strstr($name, '['))
246246
{
247-
$name = str_replace(array('[]', '][', '[', ']'), array((null !== $value ? '_'.$value : ''), '_', '_', ''), $name);
247+
$name = str_replace(array('[]', '][', '[', ']'), array((null !== $value && !is_array($value) ? '_'.$value : ''), '_', '_', ''), $name);
248248
}
249249

250250
if (false !== strpos($this->getOption('id_format'), '%s'))
@@ -330,7 +330,7 @@ protected function translate($text, array $parameters = array())
330330
* @param array $parameters The values to replace the placeholders
331331
*
332332
* @return array The translated texts
333-
*
333+
*
334334
* @see sfWidgetFormSchemaFormatter::translate()
335335
*/
336336
protected function translateAll(array $texts, array $parameters = array())

test/unit/widget/sfWidgetFormTest.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
require_once(dirname(__FILE__).'/../../bootstrap/unit.php');
1212

13-
$t = new lime_test(34);
13+
$t = new lime_test(35);
1414

1515
class MyWidgetForm extends sfWidgetForm
1616
{
@@ -106,12 +106,13 @@ public function generateId($name, $value = null)
106106
$t->is($w->generateId('foo[]'), 'id_for_foo_works', '->generateId() removes the [] from the name');
107107
$t->is($w->generateId('foo[bar][]'), 'id_for_foo_bar_works', '->generateId() replaces [] with _');
108108
$t->is($w->generateId('foo[bar][]', 'test'), 'id_for_foo_bar_test_works', '->generateId() takes the value into account if provided');
109-
$t->is($w->generateId('_foo[bar][]', 'test'), 'id_for__foo_bar_test_works', '->generateId() leaves valid ids');
109+
$t->is($w->generateId('_foo[bar][]', 'test'), 'id_for__foo_bar_test_works', '->generateId() leaves valid ids');
110110

111111
$w->setIdFormat('id');
112112
$t->is($w->generateId('foo[bar][]', 'test'), 'foo_bar_test', '->generateId() returns the name if the id format does not contain %s');
113+
$t->is($w->generateId('foo[bar][]', array('test1', 'test2')), 'foo_bar', '->generateId() ignore the value if not a string');
113114

114115
$w->setIdFormat('%s');
115-
$t->is($w->generateId('_foo[bar][]', 'test'), 'foo_bar_test', '->generateId() removes invalid characters');
116-
$t->is($w->generateId('_foo@bar'), 'foo_bar', '->generateId() removes invalid characters');
117-
$t->is($w->generateId('_____foo@bar'), 'foo_bar', '->generateId() removes invalid characters');
116+
$t->is($w->generateId('_foo[bar][]', 'test'), 'foo_bar_test', '->generateId() removes invalid characters');
117+
$t->is($w->generateId('_foo@bar'), 'foo_bar', '->generateId() removes invalid characters');
118+
$t->is($w->generateId('_____foo@bar'), 'foo_bar', '->generateId() removes invalid characters');

0 commit comments

Comments
 (0)