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' を null にすることはできません

何らかの理由で、最後に保存された要素の が$new_machine返されません。id多分私は間違った方法でやっているのですが、何が間違っているのでしょうか?

4

1 に答える 1