Как передать переменную GET в Bootstrap Modal? - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблема с моим кодом.Я хочу передать переменную PHP модему начальной загрузки.

Вот мой код:

Моя ссылка для открытия модального режима:

<td><a class="btn btn-primary btn-xs" data-toggle="modal" data-target="#modal-user" href="userDetails.php?id_user=<?= $rel['id_user'] ;?>"><?= $rel['id_user'] ;?></a></td>

Мой модальный код:

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-user" aria-hidden="true" id="modal-user">
    <div class="modal-dialog modal-lg">

        <?php
            include('userDetails.php');
        ?>

    </div>
</div>

И код userDetails.php:

<?php

require 'connect.php';

if (isset($_GET['id_user']) && !empty($_GET['id_user'])) {
    $idUser = $_GET['id_user'];
}


$sql = "SELECT * FROM users WHERE id_user=" .$bdd->quote($idUser);
$query = $bdd->query($sql);
$userDetails = $query->fetchAll(PDO::FETCH_ASSOC);


?>

        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Infos</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
            </div>
            <div class="modal-body">
                <?php
                    foreach($userDetails as $details) {
                ?>
                    <p><?= $details['name'] ?></p>
                    <p><?= $details['firstname'] ?></p>
                <?php
                    }
                ?>
            </div>
        </div>

Кроме того, у меня есть этот код jQuery:

<script>
$( document ).ready(function() {
    $('#modal-user').on('hidden.bs.modal', function () {
          $(this).removeData('bs.modal');
    });
});
</script>

Я смотрю другие сообщения и обычно все должнобыть в порядке, но у меня есть ошибка, и я до сих пор не знаю, почему ...

Примечание: неопределенная переменная: idUser в /Applications/MAMP/htdocs/directory/userDetails.php в строке 10

Можете ли вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 13 февраля 2019

Модальный Bootstrap href не вызывает вашу страницу при нажатии.Ваша страница уже загружена, когда вы include userDetails.php.Таким образом, вы можете определить get перед include или передать идентификатор пользователя через GET переменную.

Итак:

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-user" aria-hidden="true" id="modal-user">
    <div class="modal-dialog modal-lg">

        <?php
            $_GET['id_user'] = $rel['id_user'];
            include('userDetails.php');
        ?>

    </div>
</div>

В цикле

Если у вас есть цикл и вы хотите сделать его динамически через jQuery, вы можете сделать следующее:

Удалить загрузочные вызовы из вашей ссылки, добавить класс триггера modal-btn и сделатьнапример:

<a 
    class="btn btn-primary modal-btn btn-xs"
    href="userDetails.php?id_user=<?= $rel['id_user'] ;?>"><?= $rel['id_user'] ;?>
</a>

Обновите вашу модальную структуру и удалите include():

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-user" aria-hidden="true" id="modal-user"> 
  <div class="modal-dialog modal-lg">   
    <div class="modal-content"></div>    
  </div> 
</div>

JQuery должен получить свойство href ссылки и вызвать bootstrapмодальная функция load, а также принудительно установить модальное значение show

$(".modal-btn").on('click',function(e){ //trigger when link clicked
   e.preventDefault(); 
   $('#modal-user').modal('show'); //force modal to show
   $('.modal-content').load( $(this).attr('href')); //load content from link's href
});

Таким образом, ваша страница userDetails.php будет загружена внутри модального окна, и вам нужно будет удалить с нее <div class="modal-content">...</div>, чтобы избежатьдублирование ...

...