Это был мой подход к удалению элементов:
По мнению, у меня было это:
echo $form->input('extrapicture1uploaddeleted', array('value' => 0));
Логика, которой я придерживался, заключалась в том, что значение 0 означало, но еще не удалено, а значение 1 означало удаленное, следуя логической логике.
Это был обычный элемент ввода, но в CSS я использовал свойство display: none, потому что не хотел, чтобы пользователи видели это в форме. Затем я нажал кнопку «Удалить», чтобы удалить элемент ввода для загрузки изображения, появилось сообщение с подтверждением, и при подтверждении значение элемента ввода, скрытого с помощью CSS, изменится с 0 на 1:
$("#deleteextrapicture1").click(
function() {
if (confirm('Do you want to delete this picture?')) {
$('#extrapicture1upload').hide();
// This is for an input element that contains a boolean value where 0 means not deleted, and 1 means deleted.
$('#DealExtrapicture1uploaddeleted').attr('value', '1');
}
// This is used so that the link does not attempt to take users to another URL when clicked.
return false;
}
);
В контроллере условие $ this-> data ['Deal'] ['extrapicture1uploaddeleted']! = '1' означает, что дополнительное изображение 1 не было удалено (удаление кнопки загрузки с помощью JavaScript). $ this-> data ['Deal'] ['extrapicture1uploaddeleted'] == '1' означает, что изображение было удалено.
Я попытался использовать входной скрытый элемент и изменить его значение с помощью JavaScript, как я объяснил выше, но я получил ошибку черной дыры от CakePHP Security. Очевидно, это не позволяло мне изменить значение элементов ввода с помощью JavaScript, а затем отправить форму. Но когда я использовал обычные элементы ввода (не скрытые), я мог изменить их значения с помощью JavaScript и без проблем отправить форму. Мой подход состоял в том, чтобы использовать обычные элементы ввода и скрывать их с помощью CSS, поскольку использование скрытых элементов ввода приводило к ошибке «черной дыры» при изменении их значений с помощью JavaScript и последующей отправке формы.
Надеюсь, способ, которым я это сделал, может пролить свет на возможный подход к удалению полей формы в CakePHP с использованием JavaScript.