3

我有一个 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'));

如何在编辑对象时设置要检查的适当复选框?

4

1 回答 1

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()(将爆炸放在其他地方)。

于 2012-04-26T14:29:16.053 回答