Я создаю всплывающее окно подтверждения с помощью материализация модов удалить конкретную запись, отображаемую на странице. У каждой записи есть своя собственная кнопка удаления, чтобы удалить вопрос, с которым связана запись. Там значение php $questionCnt
это то, что относится к записи для удаления.
В настоящее время у меня есть рабочий метод для удаления выбранной записи, если это не в модальном. Моя проблема возникает, когда я пытаюсь $questionCnt
данные к модалу. По умолчанию он возвращается к первому значению массива с индексом 0. Я прокомментировал это в своем нерабочем коде, где именно это происходит.
Таким образом, вместо удаления выбранной записи будет удалена первая запись независимо от выбранной записи.
инициализация
$(document).ready(function(){
$('.modal-trigger').leanModal();
});
Рабочий раствор без модального
<form method="link" id="deleteQuestionForm" action="{{ url('api/question/deletequestiondata/') }}">
<input type="hidden" id="questionToDelete" value=<?php echo '"' . $questionData[$questionCnt] . '"'; ?> name = 'questionID'>
<input type="hidden" id="urlForSurvey" value="{{$surveyName}}" name = 'urlForSurvey'>
<button class="btn waves-effect waves-light" value="+" id="deleteQuestionButton" name="action" onclick="document.getElementById('deleteQuestionForm').submit();">
<input type="submit" value="Delete Question">
</button>
</form>
Нерабочее решение в модале
@foreach($questiondata as $d)
<?php $questionCnt++; ?>
<div class="card white darken-1 hoverable">
<div class="card-content black-text">
<span class="card-title"><b>{{$d->questionTxt}}</b></span>
<div class="card-action">
<div class="button right">
<button class="waves-effect waves-light btn" >
<i class="material-icons left">mode_edit</i>Edit
</button>
<button class="waves-effect waves-light btn modal-trigger red" href="#deletePopUP">
<i class="material-icons">delete</i>
</button>
<?php echo $questionCnt ; ?> <!-- Will print the correct index -->
<div id="deletePopUP" class="modal">
<?php echo $questionCnt ; ?> <!-- Will always print the first index -->
<div class="modal-content">
<h4 align="center">Are you sure you wish to delete this question?</h4>
</div>
<div class="modal-footer" align="center">
<form method="link" id="deleteQuestionForm" action="{{ url('api/question/deletequestiondata/') }}">
<input type="hidden" id="questionToDelete" value=<?php echo '"' . $questionData[$questionCnt] . '"'; ?> name = 'questionID'>
<input type="hidden" id="urlForSurvey" value="{{$surveyName}}" name = 'urlForSurvey'>
<button class="btn waves-effect waves-light" value="+" id="deleteQuestionButton" name="action" onclick="document.getElementById('deleteQuestionForm').submit();">
<input type="submit" value="Delete Question">
</button>
</form>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">No, Return
</a>
</div>
</div>
</div>
</div>
</div>
</div>@endforeach
Хм, мне все еще интересно, что за массив $questionData
выглядит (есть в нем) …die('<pre>'.print_r($questionData, 1));
решил бы мое любопытство.
Тем не менее, есть небольшая ошибка в
<input type="hidden" id="questionToDelete" value=<?php echo '"' . $questionData[$questionCnt] . '"'; ?> name = 'questionID'>
которая может быть корнем вашей проблемы. Вы видите, вы перебираете $questiondata
НЕ $questionData
(обратите внимание на чувствительность к регистру здесь). Более того, поскольку вы установили текущий цикл в $d
в вашем foreach
вы должны использовать это как (или что-то вроде) это (я не могу сказать наверняка, так как вы держите содержимое данных $questiondata
как секрет, пока
<input type="hidden" id="questionToDelete" value="<?php echo $d['id']; ?>" name="questionID">
(Я также убрал некоторые цитаты, чтобы сделать его более разборчивым).
Проблема была решена.
Чтобы передать значение php в модал, нужно добавить его в href
обе кнопки, которые активируют модальный и настроить id
модального тега.
Код, который был изменен для решения проблемы
<button class="waves-effect waves-light btn modal-trigger red"href="#deletePopUP<?php echo $questionCnt?>">
<i class="material-icons">delete</i>
</button>
<!-- Are you sure prompt -->
<div id="deletePopUP<?php echo $questionCnt?>" class="modal">
<div class="modal-content">
<!-- Rest of modal content stayed the same -->