Как мне динамически добавить что-то к переменной в PHP? - PullRequest
0 голосов
/ 13 июня 2018

У меня есть такая форма:

<?php if (isset($_POST['artist'])) {
      // do something
    } ?>
<form name="admin_on_artist_<?php echo $artist->ID; ?>" action="" method="POST">
    <p class="artist-negative">
        <label for="artist"><input type="checkbox" name="artist_<?php echo $artist->ID; ?>" id="artist_<?php echo $artist->ID; ?>"> Check this?</label>
    </p>
    <button type="submit">Update</button>
</form>

На рассматриваемой странице эта форма много раз отображается в цикле foreach.Тем не менее, когда я отправляю любую данную форму, она обновляет все формы, а это не то, что я хочу.

Как я могу добавить $artist->ID к $_POST['artist'], чтобы получить что-то вроде:

$_POST['artist_1'] для соответствия атрибутам флажка?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Решение для этого было намного проще, чем я мог поначалу понять, но в основном я просто должен был сделать это, ключевое отличие между этим и моим первоначальным вопросом - первые две строки:

<?php $artist_form_id = 'artist_'.$artist->ID;
if (isset($_POST[$artist_form_id])) {
  // do something
} ?>
<form name="admin_on_artist_<?php echo $artist->ID; ?>" action="" method="POST">
    <p class="artist-negative">
        <label for="artist"><input type="checkbox" name="artist_<?php echo $artist->ID; ?>" id="artist_<?php echo $artist->ID; ?>"> Check this?</label>
    </p>
    <button type="submit">Update</button>
</form>
0 голосов
/ 13 июня 2018

Вы можете связать ваш foreach, который генерирует разметку формы внешнего интерфейса, с foreach, который обрабатывает отправку формы.Что-то вроде:

<?php
$regex = '/^artist_([0-9]+)$/'
foreach (array_keys($_POST) as $key) {
    if (preg_match($regex,$key,$matches)) {
        $artistId = (int)$matches[1];
        // do something with $_POST[$key] according to $artistId
    }
}

Это работает для отправки одного поля или нескольких полей.

В качестве альтернативы, вы можете сделать что-то на внешнем интерфейсе в JS (как подсказывает @smith вкомментарии), чтобы гарантировать, что отправка формы всегда имеет одинаковые, хорошо известные ключи, заполняя скрытую форму текущей отправкой.При таком подходе вам потребуется добавить еще одно поле в форму, содержащую идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...