【问题标题】:how to select multiple symfony checkboxes when editing object编辑对象时如何选择多个symfony复选框
【发布时间】:2012-05-07 06:06:36
【问题描述】:

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

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

【问题讨论】:

    标签: forms symfony1 symfony-1.4 symfony-forms


    【解决方案1】:

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

    【讨论】:

    • 太棒了!像魅力一样工作。顺便说一句,您的答案代码中有一个小错误,parent::render() 有两个渲染
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多