我在爲我的控制器中的「編輯」我的表單字段時遇到了麻煩。如何在我的控制器中編輯表單的字段?
這是我有:
我已經註冊爲我的功能在我的控制器調用的服務的Symfony2的形式。我正在刪除一些不需要的字段,我正在引導用戶,然後添加其他一些表單。 (我意識到我可以創建另一個表單並創建另一個服務,但爲了我的目的,這會有點矯枉過正,我這樣做是因爲表單功能相同,但是某些字段不需要,並且一些新的具體的是)。
我現在想要在這種形式下'編輯'一個字段...'職業'字段。該字段是choice
字段,充當由一系列選項填充的單選按鈕。這是required
,並沒有empty_value
要求在其原始狀態。
我想編輯它在我的控制器功能與false
一個required
值但有相同的精確值和null
一個empty_value
。
隨着下面的註釋代碼的結果是我的'新'形式的occupation
字段的缺失,它被替換爲一個空的下拉列表。我意識到這是因爲我壓倒了整個領域,但我無法弄清楚如何簡單地編輯它。
代碼:
/**
* Explanation of addAndRemoveFieldsInRegisterForm function:
* The function gets the 'registration' form and removes any
* fields not needed for the 'in_registration' form
* and then adds the necessary fields to the form.
*/
private function addAndRemoveFieldsInRegisterForm($user)
{
$form = $this->createForm('user_registration', $user);
// http://stackoverflow.com/questions/10920006/pass-custom-options-to-a-symfony2-form ---
// --- use that to help. Look at changing the value of array.
$form->remove('title');
$form->remove('company');
$form->remove('username');
$form->remove('city');
$form->remove('state');
$form->remove('country');
$form->remove('gender');
$form->remove('age');
$form->remove('roles');
// $form->remove('occupation');
// $pr = $form->get('occupation');
// $pr->set('required' => false);
// $form->get('occupation')->add('required'=>false, 'empty_value'=>null);
// $form->add('occupation','choice', array(
// 'required' => false,
// 'empty_value' => null,
//));
// echo "<pre>";
// var_dump(get_class_methods($form));die;
$form->add('occupation','choice', array(
'required' => false,
'empty_value' => null,
));
$form->add('canEmail', 'checkbox', array(
'label' => 'Can Email?',
'required' => false,
));
$form->add('sendEmail', 'choice', array(
'label' => 'Send Welcome Email? ',
'required' => true,
'mapped' => false,
'expanded' => true,
'choices' => array(
"yes" => "Yes",
"no" => "No"
),
));
return $form;
}
原生形態(這是作爲一個服務的一個)
private $requireOccupation;
$this->requireOccupation = true;
->add('occupation','choice', $options['occupation'])
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$occupation = array(
"label" => "Which of these currently describes you best? (Occupation):",
"expanded" => true,
'required'=> $this->requireOccupation,
"choices" => array(
"X" => "X",
"B" => "B",
"C" => "C",
"J" => "J",
),
'constraints' => array(
new NotBlank()
));
$resolver->setDefaults(array(
'occupation' => $occupation,
));
}
是否要編輯小部件以獲得新的默認值,或者您想要編輯用戶填充的數據以考慮您的默認值? – goto
我想編輯小部件以獲得新的默認值,但也保留其他(未編輯)的值。 – Ale