Я создал структуру поля, как показано ниже, из кода и не использовал пользовательский интерфейс веб-формы. Причина, по которой я сделал это программно, заключается в том, что у меня есть сотни форм, и я хотел сделать это один раз и навсегда.
Ниже приведен мой код:
for ($i = 0; $i <= 4; $i++) {
$form['submitted']['file' . $i] = array(
'#title' => t('File'),
'#type' => 'managed_file',
'#description' => t('Please upload a document or image.'),
'#default_value' => variable_get('file' . $i, ''),
'#weight' => 100,
);
$form['submitted']['remove_name'] = array(
'#type' => 'submit',
'#value' => t('Remove'),
//I NEED A WAY TO PASS $i AS ARGUMENT TO THE CALLBACK
'#submit' => array('form_remove_attachment'),
// Since we are removing a name, don't validate until later.
'#limit_validation_errors' => array(),
);
}
И ниже обратного вызова
function form_remove_attachment($i) {
$form_state['submitted']['file' . $i]--;
// Setting $form_state['rebuild'] = TRUE causes the form to be rebuilt again.
$form_state['rebuild'] = TRUE;
}
Теперь мне нужна кнопка удаления для каждого поля вложения, чтобы пользователи могли изменить свое мнение относительно вложенных файлов. Я могу, конечно, добавить его с помощью JS, но таким образом вложения не удаляются из $form_state.
Есть ли у кого-нибудь предложения, как передать $i в callback form_remove_attachment?