我有以下表单元素,它会生成一个复选框:
$deliveryLocationChoices = array( '0' => 'Select if Applicable',
'front' => 'Front',
'rear' => 'Rear',
'left' => 'Left Side',
'right' => 'Right Side');
$this->setWidgets(array(
'delivery_location' => new sfWidgetFormChoice(array('choices' => $deliveryLocationChoices )),
));
很有用,除了我想要打印每个复选框项目。原因是我需要自定义每个盒子的位置。
由于
答案 0 :(得分:3)
您可以通过将renderer_options参数传递给新的sfWidgetFormChoice来覆盖复选框的显示方式。
看起来像这样
$this->setWidgets(array(
'delivery_location' => new sfWidgetFormChoice(array('choices' => $deliveryLocationChoices, 'renderer_options' => array('formatter' => array($this, 'checkboxFormatter')))),
));
然后,在您的表单类中,定义函数' checkboxFormatter'像这样
public static function checkboxFormatter($widget, $inputs) {}
这样您就可以通过$ inputs var访问您的复选框了。您必须在checkboxFormatter函数的末尾返回显示结果。