Как мне получить доступ к функции no_monitor в функции save()?

106
8

У меня есть эта функция 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 предложение о том, как получить доступ no_emisor значению 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 последнего сохраненного элемента. Может быть, я делаю не так, так что я делаю неправильно?

спросил(а) 2013-06-20T05:43:00+04:00 7 лет, 9 месяцев назад
1
Решение
61

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

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

Редактировать:

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

ответил(а) 2013-06-20T05:54:00+04:00 7 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема