$w->setIdFormat('barID_%s'); $t->like($w->render('foo'), '/<select name="foo" id="barID_foo">/', '->render() uses the id format specified'); $w->setIdFormat('%s'); $w->setOption('multiple', true); $t->like($w->render('foo'), '/<select name="foo\\[\\]" multiple="multiple" id="foo">/', '->render() adds a multiple attribute for multiple selects'); $w->setOption('expanded', true); $t->like($w->render('foo'), '/<ul class="checkbox_list">/', '->render() uses a checkbox list when expanded and multiple are true'); $w->setOption('multiple', false); $t->like($w->render('foo'), '/<ul class="radio_list">/', '->render() uses a checkbox list when expanded is true and multiple is false'); // choices are translated $t->diag('choices are translated'); $ws = new sfWidgetFormSchema(); $ws->addFormFormatter('stub', new FormFormatterStub()); $ws->setFormFormatterName('stub'); $w = new sfWidgetFormChoice(array('choices' => array('foo' => 'bar', 'foobar' => 'foo'))); $w->setParent($ws); $dom->loadHTML($w->render('foo')); $css = new sfDomCssSelector($dom); $t->is($css->matchSingle('#foo option[value="foo"]')->getValue(), 'translation[bar]', '->render() translates the options'); $t->is($css->matchSingle('#foo option[value="foobar"]')->getValue(), 'translation[foo]', '->render() translates the options'); // ->getJavaScripts() ->getStylesheets() $t->diag('->getJavaScripts() ->getStylesheets()'); $w = new sfWidgetFormChoice(array('choices' => array())); $w->setOption('renderer_class', 'MyWidget'); $t->is($w->getJavaScripts(), array('/path/to/a/file.js'), '->getJavaScripts() returns the stylesheets of the renderer widget'); $t->is($w->getStylesheets(), array('/path/to/a/file.css' => 'all'), '->getStylesheets() returns the JavaScripts of the renderer widget'); // __clone() $t->diag('__clone()'); $w = new sfWidgetFormChoice(array('choices' => new sfCallable(array($w, 'foo')))); $w1 = clone $w; $callable = $w1->getOption('choices')->getCallable();