2013-04-26 2 views
0

Я работаю с Symfony PHP. У меня есть флажок, и в зависимости от его проверки или нет, я хочу отобразить combobox в форме. Если флажок установлен, я хочу отобразить комбо со всеми параметрами, но если он не установлен, я хочу отключить комбо, но виджет должен иметь значение по умолчанию или жестко запрограммированное, когда форма сохраняется. Я не знаю, как это сделать, потому что когда я отключил функцию combobox, форма сохраняет виджет как null, и я не могу установить предопределенное значение. Кто-нибудь может мне помочь?Установите значение по умолчанию для виджета, если оно не установлено в форме (PHP Symfony)

ответ

1

Вы можете изменить представленные данные формы в методе bind(). Используйте это, если вы хотите изменить поведение формы в зависимости от того, какой пользователь выбрал/отправил.

Если вы хотите изменить способ изменения объекта после того, как данные формы были проверены и готовы к сохранению в базе данных, ознакомьтесь с методом updateObject().

class myForm 
{ 
    public function configure() 
    { 
     // configuration 
    }  

    public function bind($taintedValues = array(), $taintedFiles = array()) 
    { 
     // I can alter the behaviour of the form here, depending on the data submitted 
     if (isset($taintedValues['do_not_store_my_personal_details'])) { 
      // Change the value of a form field. If the form doesn't pass validation, the user will see any information entered into the phone_number fields has been deleted 
      $taintedValues['phone_number'] = null; 
     } 

     return parent::bind($taintedValues, $taintedFiles); 
    } 

    public function updateObject($values = null) 
    { 
     if ($values === null) { 
      $values = $this->getValues(); 
     } 

     // Override the data stored with the object 
     if ($values['do_not_store_my_personal_details'] == true) { 
      $values['phone_number'] = null; 
     } 

     return parent::updateObject($values); 
} 
Смежные вопросы