选择为验证器时,sfValidator选项会出错

时间:2012-09-05 18:49:01

标签: php symfony1 symfony-1.4

我对sfWidgetFormDoctrineChoicesfValidatorDoctrineChoice有疑问。无论我对此做什么,表单保存时都会出现“无效”错误。

这是一个'配方'应用程序,其中包含货架上的零件,用于创建另一个零件的成分,用于混合成分的流程以及每个流程中的步骤。我的架构如下:

Part (1) ------- Ingredient (many)
Part (1) ------- Process (many)
Process (1) ------ Step (many)
Step (many) ----- Ingredient (1) -- this is called a 'Charge' and is referenced by Step.charge_id

我在StepForm中添加了代码,为charge_id设置小部件和验证器架构,并在设置表单时调用它。查询使用该过程从部件中获取成分列表。选择列表填充正确,但无论我做什么,验证都会给我一个错误,即使使用sfValidatorPass。

代码如下:有Doctrine和非Doctrine版本,两者都不起作用。 sfValidatorPass也不起作用,这意味着发生了一些奇怪的事情。

我可以做些什么来调试和解决这个问题?

主义版本:

$query =
    IngredientTable::getInstance()->getFindByProcessIdQuery($process ? $process->getId() : null);
$this->widgetSchema['charge_id'] =
    new sfWidgetFormDoctrineChoice(
        array('model' => $this->getRelatedModelName('Charge'),
              'query' => $query,
              'default' => $this->object->charge_id,
              'add_empty' => true) );
$this->validatorSchema['charge_id'] =
    new sfValidatorDoctrineChoice(
        array('model' => $this->getRelatedModelName('Charge'),
              'query' => $query,
              'required' => false) );

非教条版

$choices = array(null => null);
$ingredients = IngredientTable::getInstance()->findByProcessId($process ? $process->getId() : null);
foreach ($ingredients as $ingredient) {
  $choices[$ingredient->getId()] = $ingredient->__toString();
}
$this->widgetSchema['charge_id'] =
    new sfWidgetFormChoice(array('choices' => $choices));
$this->validatorSchema['charge_id'] =
    new sfValidatorChoice(array('choices' => $choices,
                                'empty_value' => $this->getObject()->getChargeId(),
                                'required' => false));

0 个答案:

没有答案