Включить чекбоксы исходя из данных в файле

128
29 декабря 2020, 22:10

Есть массив данных, полученный из .ini файла и переведенный в JSON, такого вида:

{"Box":1,"Case":1,"CPU":1,"RAM":1,"PSU":1,"SoundCard":1,"NetCard":1,"Monitor":1,"Name":"Template2"}

$components - массив, возвращенный из файла, имеет вид:

<?php
return [
'Box' => 'Системный блок',
'Case' => 'Корпус',
'CPU' => 'Процессор',
'RAM' => 'Оперативная память',
'MB' => 'Материнская плата',
'Video' => 'Видеокарта',
'SSD' => 'Твердотельный накопитель',
'HDD' => 'Жёсткий диск',
'DVD' => 'Оптический привод',
'PSU' => 'Блок питания',
'SoundCard' => 'Звуковая карта',
'NetCard' => 'Сетевая карта',
'Monitor' => 'Монитор',
'Keyboard' => 'Клавиатура',
'Mouse' => 'Мышь',
'Telephone' => 'Телефон',
'UPS' => 'ИБП',
];

Файл загрузки данных:

<?php
$names = array();
foreach (glob(__DIR__ . "/../templates/*.ini") as $file) {
    $array = json_decode(file_get_contents($file), true);
    $names[] = $array['Name'];
}
$data = array();
foreach (glob(__DIR__ . "/../templates/*.ini") as $file) {
    $array = json_decode(file_get_contents($file), true);
    $fileName = basename($file, '.ini');
    $data[] = $array;
}
$jsonData = json_encode($data);

Есть select с option'ами:

  <div id="templateDiv">
                <select name="templates">
                    <option value="default" selected>Выберите шаблон</option>
                    <?php foreach ($names as $name):?>
                        <option value=<?=$name?>><?=$name?></option>
                    <?php endforeach; ?>
                </select>
                <hr>
                    <ul class="checkbox">
                        <?php foreach ($components as $component => $nameRu):?>
                            <li><input type="checkbox" name="components[]" value=<?=$component?> id=<?=$component?>> <label for=<?=$component?>><?=$nameRu?></label></li>
                        <?php endforeach; ?>
                    </ul>
                <hr>
        </div>

Соответственно, при создании чекбоксов, value и id им задаются по типу: Box, Case, CPU

<?php foreach ($components as $component => $nameRu):?>
 <li><input type="checkbox" name="components[]" value=<?=$component?> id=<?=$component?>> <label for=<?=$component?>><?=$nameRu?></label></li>
<?php endforeach; ?>

Как реализовать включение флажка в чекбоксе, сравнив имя ключа в JSON с именем чекбокса?

READ ALSO
Функция implode php

Функция implode php

Есть код:

103
Сетеры и гетеры для Jackson де\сериализации

Сетеры и гетеры для Jackson де\сериализации

Для десериализации и сериализации использую библиотеку JacksonИногда на практике встречаюсь с требованием прописать сеттеры для класса сущности,...

121
Сервер томкат не хочет обрабатывать jsp

Сервер томкат не хочет обрабатывать jsp

There's a problem: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') (line 1, column 2)

100
Не могу найти минимальный элемент в коллекции

Не могу найти минимальный элемент в коллекции

Ребят, почему ошибка? Что ему не нравится?

141