2013-06-20 3 views
0

Я эту configure() функцию в моей форме:Как мне получить доступ к функции no_monitor в функции save()?

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 , как мне получить доступ к выбранному значению, когда пользователи отправляют форму? Это лучший способ достичь этого?

EDIT После принять предложение о том, как получить доступ к 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]: Integrity constraint violation: 1048 Column 'idmaquina' cannot be null

По какой-то причине $new_machine Безразлично» t возвращает id последнего сохраненного элемента. Может быть, я делаю не так, так что я делаю неправильно?

ответ

1

Я думаю, вы можете сделать это в форме doUpdateObject, так как это получает очищенные значения.

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

Edit:

В качестве альтернативы, $this->values['no_emisor'] должен работать после того, как форма была связана.

+0

Возможно, но этот метод работал для меня несколько раз, я просто не знаю, как получить значение 'no_emisor' – Reynier

+0

@Reynier см. Мое редактирование –

+0

не могли бы вы взглянуть на мое издание? – Reynier