【问题标题】:Symfony 1.4 - How to set default values on sfWidgetFormChoice (checkboxes)Symfony 1.4 - 如何在 sfWidgetFormChoice 上设置默认值(复选框)
【发布时间】:2012-04-05 09:35:30
【问题描述】:

以下代码创建一个包含多个复选框的字段。如何设置这些复选框的默认值?

new sfWidgetFormChoice(array(
 "choices" => $choices,
 "label" => "Label",
 "multiple" => true,
 "expanded" => true
));

【问题讨论】:

    标签: symfony-1.4 symfony-forms


    【解决方案1】:

    您可以手动设置默认值:

    $countries = array(
        'Spain',
        'England',
        'France'
    );
    
    $this->widgetSchema['countries'] = new sfWidgetFormChoice(array('choices' => $countries, 'multiple' => true, 'expanded' => true));
    
    // Form will render with Spain and England pre-selected
    $this->widgetSchema['countries']->setDefault(array(0,1));
    

    如果与表单相关的对象不是新的,默认值将根据存储的值预先选择,因此您可能需要在最后一行添加$this->getObject()->isModified() 检查。

    【讨论】:

    • 这个具体的方法没用,但是有一个变通方法是有意义的: $this->setDefault('countries', array(0,1)) 另外值得注意的是0和1对应于索引在 $countries 数组中。这些索引也可以是字符串。
    • 实际上它确实有效,我在发布代码之前对其进行了测试,这取决于您的小部件架构是如何设置的。如果您发现此答案有帮助,请接受。不管怎样,祝你好运。
    【解决方案2】:

    如果您有一个带有 select 小部件的表单

    $this->widgetSchema['example_select_export'] =  new sfWidgetFormChoice(array(
                                            'multiple' => false,
                                            'expanded' => false,
                                            'choices' => array("csv" => "CSV", "excel" => "Excel", "csv_mac" => "CSV mac")
    
                                    );
    $choices = array("csv" => "CSV", "excel" => "Excel", "csv_mac" => "CSV mac");
    

    您可以在创建表单的操作中设置默认值,调用此

    $this->form->setDefault('example_select_export','csv')
    

    或者,如果您愿意,只需按照您希望它们显示的顺序排列您的选择

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2015-11-17
      • 1970-01-01
      • 2021-02-18
      相关资源
      最近更新 更多