0

我的表单中有这个configure()功能:

public function configure() {
    $this->current_user = sfContext::getInstance()->getUser()->getGuardUser();

    unset($this['updated_at'], $this['created_at']);

    $this->widgetSchema['idempresa'] = new sfWidgetFormInputHidden();
    $id_empresa = $this->current_user->getSfGuardUserProfile()->getIdempresa();
    $this->setDefault('idempresa', $id_empresa);

    $this->widgetSchema['no_emisor'] = new sfWidgetFormDoctrineChoice(array('model' => 'SdrivingEmisor', 'add_empty' => 'Seleccione un Emisor', 'expanded' => false, 'multiple' => false));
    $this->validatorSchema['idempresa'] = new sfValidatorPass();
    $this->validatorSchema['no_emisor'] = new sfValidatorPass();
}

我需要在save()函数中定义一个关系数据,所以我这样做:

public function save($con = null) {
    $new_machine = parent::save($con);

    $relation = new SdrivingMaquinaEmisor();
    $relation->setIdmaquina($new_machine);
    $relation->setIdemisor();
    $relation->save();

    return $new_machine;
}

为了设置Idemisor,当用户提交表单时如何访问选定的值?这是实现这一目标的最佳方式吗?

编辑 在接受关于如何访问no_emisor价值的建议之后,我的代码如下所示:

public function save($con = null) {
    $new_machine = parent::save($con);

    $relation = new SdrivingMaquinaEmisor();
    $relation->setIdmaquina($new_machine);
    $relation->setIdemisor($this->values['no_emisor']);
    $relation->save();

    return $new_machine;
} 

但我得到这个错误:

SQLSTATE [23000]:违反完整性约束:1048 列 'idmaquina' 不能为空

由于某种原因$new_machine,不会返回id最新保存的元素。也许我做错了,所以我做错了什么?

4

1 回答 1

1

我认为您可能希望在表单中执行此操作doUpdateObject,因为它接收清理后的值。

http://www.symfony-project.org/api/1_4/sfFormObject#method_doupdateobject

编辑:

或者,$this->values['no_emisor']一旦绑定表单就应该工作。

于 2013-06-20T02:54:38.940 回答