Как установить выбранные свойства в нескольких флажках с циклом foreach в PHP? - PullRequest
0 голосов
/ 29 января 2019

Я хочу отобразить все категории, и я хочу установить выбранные свойства на несколько флажков.

<div class="col-md-10">
<?php 

$allCategories = $category->getAllCategory();

if ($allCategories) {

$categoryAccess = $category_permitted->getCategoriesByUserId($user_info[0]->id);

foreach ($allCategories as $key => $items) {
    if ($categoryAccess) {
        foreach ($categoryAccess as $key => $value) {
            ?>
            <input type="checkbox" name="cat_access[]" value=" <?php echo $items->id ?> " <?php echo (isset($categoryAccess) && @$categoryAccess[$key]->id == $items->id) ? 'checked' : '' ?>><?php echo $items->title?>
            <?php
        }
    }

    ?>

    <?php
}
}
 ?>
    </div>

После циклического просмотра $categoryAccess я выбрал два варианта, но все категории повторяются дваждывыход, т.е. категория 1, категория 1, категория 2, категория 2, категория 3, категория 3, категория 4, категория 4.

У меня есть 4 категории, в которых есть флажки, и для вывода необходимо проверить 2 категории.Я получаю ошибку в <?php echo (isset($categoryAccess) && $categoryAccess->id == $items->id) ? 'selected' : '' ?>, она выдает эту ошибку: пытается получить свойство 'id' не-объекта, а когда я делаю <?php echo (isset($categoryAccess) && $categoryAccess[0]->id == $items->id) ? 'selected' : '' ?>, она выдает данные, но только с индексом 0.

var_dump($categoryAccess):

array(2)
{
    [0]=> object(stdClass)#6 (3)
    {
        ["id"]=> string(1) "1"
        ["user_id"]=> string(1) "2"
        ["title"]=> string(25) "category1"
    }
    [1]=> object(stdClass)#20 (3)
    {
        ["id"]=> string(1) "3"
        ["user_id"]=> string(1) "2"
        ["title"]=> string(18) "category2"
    }
}

1 Ответ

0 голосов
/ 29 января 2019

Попробуйте это:

<?php

$allCategories = $category->getAllCategory();
$categoryAccess = $category_permitted->getCategoriesByUserId($user_info[0]->id);

foreach ($allCategories as $items) {

  $checked = '';    

  foreach ($categoryAccess as $value) {

    if($items->id == $value->id){
      $checked = 'checked';
      break;
    } 
  }
  ?>

  <input type="checkbox" name="cat_access[]" value="<?php echo $items->id ?>" <?php echo $checked ?>>
  <?php echo $items->title?>

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