#forms #loops #symfony
#формы #циклы #symfony
Вопрос:
У меня проблема в форме symfony2. У меня есть такое же поле в форме. Я создаю одно за другим, изменяя имя.
$formBuilderUpload = $this->createFormBuilder()->setAction($this->generateUrl('bsi_bkpm_backend_uploadfile_create'));
$formBuilder = $formBuilderUpload;
$formBuilder->add('file_1','file', array('required'=> false, 'label'=> 'File 1'))
->add('filename_1' , 'text', array(
'required' => false,
'label' => 'Subject 1'
))
->add('description_1','text',array('required'=> false, 'label'=>' Description 1'))
->add('file_2','file', array('required'=> false, 'label'=> 'File 2'))
->add('filename_2' , 'text', array(
'required' => false,
'label' => 'Subject 2'))
->add('description_2','text',array('required'=> false, 'label'=>' Description 2'))
->add('file_3','file', array('required'=> false, 'label'=> 'File 2'))
->add('filename_3' , 'text', array(
'required' => false,
'label' => 'Subject 3'))
->add('description_3','text',array('required'=> false, 'label'=>' Description 4'))
->add('file_4','file', array('required'=> false, 'label'=> 'File 2'))
->add('filename_4' , 'text', array(
'required' => false,
'label' => 'Subject 4'))
->add('description_4','text',array('required'=> false, 'label'=>' Description 4'))
->add('file_5','file', array('required'=> false, 'label'=> 'File 5'))
->add('filename_5' , 'text', array(
'required' => false,
'label' => 'Subject 5'))
->add('description_5','text',array('required'=> false, 'label'=>' Description 5'))
// add submit button
->add('submit', 'submit', array('label' => 'Create'));
//Create the form
$form = $formBuilder->getForm();
return $form;
Но я хочу, чтобы код стал эффективным, зациклив его. Кто-нибудь знает, как это сделать?
С наилучшими пожеланиями,
хендраван
Комментарии:
1. Я не понимаю вашего вопроса. Не могли бы вы объяснить это лучше? Какой код вам нужен?
2. Я хочу выполнить загрузку нескольких файлов с использованием формы symfony и добавить какое-либо другое текстовое поле, такое как тема и описание. Я хочу сделать их как один массив имен переменных
Ответ №1:
Это кажется довольно простым, просто выполните цикл над циклом for вот так…
$limit = 5;
for ($i = 1; $i <= $limit; $i ) {
$builder
->add('file_'.$i, 'file', array(
'required' => false,
'label' => 'File '.$i,
))
->add('filename_'.$i, 'text', array(
'required' => false,
'label' => 'Subject '.$i,
))
->add('description_'.$i, 'text', array(
'required' => false,
'label' => 'Description '.$i,
))
;
}
Комментарии:
1. да, вы правы.. это решило мою проблему, спасибо Qoop. Я пытался выполнить цикл в первый раз, но потерпел неудачу. Вот почему я спрашиваю. Но, может быть, вы можете мне помочь, как изменить имя параметра, чтобы оно стало одним массивом?