sfValidator Choice is invalid symfony 1.4


sfValidator Choice is invalid symfony 1.4

我正在用另一个表单的数据编写一个表单代码。我从带有"选择"的验证器那里收到一个错误,erros 说:dia_semana [Invalid.] id_programa [Invalid.]但我不知道如何解决这个问题。这是我的代码:

public function configure()
{        
$this->setWidgets(array(    
$this->validatorSchema->setOption('allow_extra_fields', true);
$this->validatorSchema->setOption('filter_extra_fields', true); 
$this->setWidgets(array(
        'dia_semana'    => new sfWidgetFormChoice(array('label' => 'Data da Semana','choices' => array("" => "", "segunda" => "Segunda-Feira","terca" => "Terca-Feira"))),
  'id_programa'   => new sfWidgetFormChoice(array('label' => 'Programa',
                                                        'choices' => Doctrine_Core::getTable('tbprogramas_tv')->getProgramas())), 
));
$this->setValidators(array(
        'dia_semana'    => new sfValidatorChoice(array(
'choices' => array("" => "","segunda" => "Segunda-Feira", "terca" => "Terca-Feira"), 'required' => false)),
 'id_programa'   =>  new sfValidatorChoice(array(
            'choices' => array_keys(Doctrine_Core::getTable('tbprogramas_tv')->getProgramas()), 
'required' => false)),
));
}

有人可以帮助我吗?

sfValidatorChoice仅使用数组的值作为有效值,因此您只需提供['key'],而不是['key' => 'value']对:

public function configure()
{        
    $this->setWidgets(array(    
    $this->validatorSchema->setOption('allow_extra_fields', true);
    $this->validatorSchema->setOption('filter_extra_fields', true); 
    $dias = array("" => "", "segunda" => "Segunda-Feira","terca" => "Terca-Feira");
    $programas = Doctrine_Core::getTable('tbprogramas_tv')->getProgramas();
    $this->setWidgets(array(
            'dia_semana'    => new sfWidgetFormChoice(array('label' => 'Data da Semana','choices' => $dias)),
      'id_programa'   => new sfWidgetFormChoice(array('label' => 'Programa',
                                                            'choices' => $programas)), 
    ));
    $this->setValidators(array(
            'dia_semana'    => new sfValidatorChoice(array(
    'choices' => array_keys($dias), 'required' => false)),
     'id_programa'   =>  new sfValidatorChoice(array(
                'choices' => array_keys($programas)), 
    'required' => false)),
    ));
}