我有一个sfWidgetFormChoice,它在Symfony 1.4中呈现复选框。我遇到的问题是我想将每个选项作为表中的一行进行处理。所以我的html理想情况是这样的:
<tr><td>Choice 1</td></tr>
<tr><td>Choice 1</td></tr>
<tr><td>Choice 1</td></tr>
.
.
.
因此它将呈现为表而不是列表。
谢谢!
答案 0 :(得分:2)
在名为MyForm
的表单中,创建以下小部件:
$this->widgetSchema ['my_widget'] = new sfWidgetFormChoice(array('multiple' => true, 'expanded' => true, 'choices' => my_choices, 'renderer_class' => 'sfWidgetFormSelectCheckbox', 'renderer_options' => array('formatter' => array('MyForm', 'MyFormatter'))));
$this->validatorSchema ['my_widget'] = new sfValidatorChoice(array('multiple' => true, 'choices' => array_keys(my_choices), 'required' => false));
然后添加以下名为MyFormatter
的格式化程序方法:
public static function MyFormatter($widget, $inputs) {
$result = '<table>';
foreach ($inputs as $input) {
$result .= '<tr><td>' . $input ['label'] . ' ' . $input ['input'] . '</td></tr>';
}
$result .= '</table>';
return $result;
}
我通过在小部件定义中将renderer_class
选项设置为sfWidgetFormSelectCheckbox
来使用sfWidgetFormSelectRadio
将选项呈现为复选框,您可以使用array('formatter' => array('MyForm', 'MyFormatter'))
将其呈现为单选按钮,然后您可以调用其他格式化程序另一种形式是改变{{1}}。