2010-06-12 67 views
1

我有一个sfWidgetFormChoice,它呈现Symfony 1.4中的复选框。我遇到的问题是我想要将每个选项作为表格中的一行进行排列。所以,我的html在理想情况下是这样的:在Symfony选择小部件的表格中将每个选项呈现为一行

<tr><td>Choice 1</td></tr> 
<tr><td>Choice 1</td></tr> 
<tr><td>Choice 1</td></tr> 
      . 
      . 
      . 

因此,它会呈现为一个表,而不是一个列表。

谢谢!

回答

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将其呈现为单选按钮,并且可以通过更改01从另一个表单调用另一个格式化工具。

相关问题