Ну, это может показаться легким, но для меня это запутанно, как черт. Я работал над формой для редактирования уже существующей записи в базе данных. Некоторые из полей создаются и заполняются на основе записей из объединенной таблицы.Zend Form Удалить кнопку
Это звучит немного отрывочно, поэтому я попытаюсь проиллюстрировать его. У меня есть таблица с контентом Content и таблица с именем Files, которая содержит имена файлов и местоположения. Я получаю имена файлов на основе предоставленного идентификатора содержимого, а затем форма создает поля, а затем заполняется именами файлов.
public function setFiles($files) {
$i = 0;
foreach ($files as $file) {
$i++;
$fieldname = "encloseditemname{$i}";
$this->addElement('text', $fieldname, array('required' => true,
'label' => 'Enclosed item name (test)',
'value' => $file['file_url'],
));
}
}
Это работает отлично, но теперь я хочу добавить кнопку, которая позволит мне удалить ОДИН из файлов. Так что я должен был сделать, это создать в контроллере fileDeleteAction()
, а затем перенаправить кнопку на это действие, удалить его в базе данных и затем визуализировать вид с помощью формы.
Имея действие визуализировать другой вид, то это стандартный вид, а не проблема. Написание кода для удаления записи в базе данных также не является проблемой. Создание кнопки, которая перенаправляет действие удаления с помощью метода addElements в качестве фабрики ... массивная проблема. Вот как далеко я добрался.
$this->addElement('button', "deleteencloseditem{$i}", array(???));
Как я могу получить эту кнопку, чтобы перенаправить к операции удаления без него мешая кнопку отправки в нижней части моей формы, которая используется для отправки формы и позвонить в editAction в моем контроллере.
Я изучил использование javascript, чтобы определить, какая кнопка нажата, но я еще не дома в javascript, и у меня возникают проблемы с поиском, какая кнопка нажата, поскольку имя кнопки и id зависят на функцию setFiles и, следовательно, может находиться в диапазоне от deleteencloseditem1
и deleteencloseditem5000
в зависимости от количества имен файлов, которые он вставляет в форму.
Как это сделать? Любые советы или рекомендации хорошо оценены :)
Ваша версия клиентской версии, к сожалению, не работает. Кажется, что не удается найти, какая кнопка нажата. '$ ('input.delete'). click (function() { ' выбирает кнопки с установленным типом, без моей собственной расширенной версии кнопки отправки. Я не могу установить тип атрибута кнопки. либо «кнопка», так как я создаю элемент кнопки в своем верхнем столбце или отправлю, если бы я решил создать элемент кнопки отправки. В настоящее время пытается выполнить решение на стороне сервера. –
Я получил версию на стороне сервера, так как вы предположили, что у меня была указатель действия, на которую была нажата кнопка, и на основании того, что она была направлена к правильному действию, после чего удаляет запись и затем перенаправляется на предыдущую страницу действий. И я признаю, что сначала я перенаправил снова удаляя запись только в бесконечном цикле, только прерываясь, пытаясь удалить одну и ту же запись во второй раз, давая ошибку БД. К счастью, s с использованием перенаправления вместо этого. –
Рад, что у вас есть версия на стороне сервера. Что касается подхода на стороне клиента: вы можете, конечно, изменить '$ ('input.delete')' на то, что идентифицирует ваши кнопки удаления. Если ваши кнопки удаления - все '