我有一个symfony 1.4应用程序,并且我使用sfWidgetFormChoice
形式创建了多个复选框。
我可以毫无问题地设置默认设置,但在保存对象并查看编辑表单后,我无法检查复选框。
“已检查”复选框中的值会被内爆并保存到单个字段中。
例如:
这是默认设置。
这将Full-Time;Hourly
保存到数据库中。
这很有效。
当我编辑此对象时,表单如下所示:
编辑对象时setDefault
函数不起作用(因为那里有'数据',所以我们不需要默认值)。
我是如何创建字段对象的:
$choices = array(
'Full-Time' => 'Full-Time',
'Part-Time' => 'Part-Time',
'Hourly' => 'Hourly',
'Contract' => 'Contract'
);
$this->widgetSchema['emp_type'] = new sfWidgetFormChoice(
array(
'choices' => $choices,
'multiple' => true,
'expanded' => true
),
array()
);
$this->setDefault('emp_type', array('Full-Time', 'Hourly'));
如何在编辑对象时设置要检查的相应复选框?
答案 0 :(得分:2)
sfWidgetFormChoice::render()期望$ value参数是一个数组。所以我认为有两种方法可以达到你想要的效果:
创建一个继承自sfWidgetFormChoice的新Widget类。只实现render方法:
public function render($name, $value = null, $attributes = array(), $errors = array()) {
$value = explode(';', $value);
return parent::render($name, $value, $attributes, $errors);
}
或者您可以调整渲染方法或模型的调用者,以便使用$ value作为数组调用sfWidgetFormChoice :: render()(将爆炸放在其他地方)。