ошибка показывает на мой взгляд codeigniter

0

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

Возникла ошибка PHP

Уровень важности: предупреждение

Сообщение: in_array() ожидает, что параметр 2 будет массивом, boolean

Какой был бы лучший способ исправить это, я думаю, что это имеет какое-то отношение к моему permission[access] на контроллере, который осуществляет просмотр.

Посмотреть

<div class="form-group">
<label class="col-sm-2 control-label">Access Permission</label>
<div class="col-sm-10">
<div class="well well-sm" style="height: 200px; overflow: auto;">
<?php foreach ($permissions as $permission) { ?>
<div class="checkbox">
<label>
<?php if (in_array($permission, $access)) { ?>
<input type="checkbox" name="permission[access][]" value="<?php echo $permission; ?>" checked="checked" />
<?php echo $permission; ?>
<?php } else { ?>
<input type="checkbox" name="permission[access][]" value="<?php echo $permission; ?>" />
<?php echo $permission; ?>
<?php } ?>
</label>
</div>
<?php } ?>
</div>
<a onclick="$(this).parent().find(':checkbox').prop('checked', true);">Select All</a> / <a onclick="$(this).parent().find(':checkbox').prop('checked', false);">Unselect All</a></div>
</div>

Функция контроллера

public function getForm() {
    $data['title'] = "Users Group";

    $this->load->model('admin/user/model_user_group');

    $id = $this->uri->segment(4);

    if (isset($id) && $this->input->server('REQUEST_METHOD') != 'POST') {
        $user_group_info = $this->model_user_group->getUserGroup($id);
    }

    $ignore = array(
        'admin',
        'dashboard',
        'filemanager',
        'login',
        'menu',
        'register',
        'online',
        'customer_total',
        'user_total',
        'chart',
        'activity',
        'logout',
        'footer',
        'header'
    );

    $data['permissions'] = array();

    $files = glob(FCPATH . 'application/modules/admin/controllers/*/*.php');

    foreach ($files as $file) {
        //$part = explode('/', dirname($file));

        $permission =  basename(strtolower($file), '.php');

        if (!in_array($permission, $ignore)) {
            $data['permissions'][] = $permission;
        }
    }

    if (null !==($this->input->post('permission[access]'))) {
        $data['access'] = $this->input->post('permission[access]');
    } elseif ($user_group_info['permission']['access']) {
        $data['access'] = $user_group_info['permission']['access'];
    } else {
        $data['access'] = array();
    }

    $this->load->view('template/user/users_group_form.tpl', $data);
}
  • 0
    in_array($access, $permission) . Игла первая, стог сена вторая: php doc
  • 0
    Проверьте $data['access'] . Возвращает boolean , должно быть array()
Показать ещё 2 комментария
Теги:
arrays
codeigniter

1 ответ

2
Лучший ответ

Я верю, что проблема кроется в вашем контроллере, как вы изначально сказали. Попробуй это:

В вашем контроллере замените это:

if (null !== $this->input->post('permission[access]')) {
    $data['access'] = $this->input->post('permission[access]');
} elseif ($user_group_info['permission']['access']) {
    $data['access'] = $user_group_info['permission']['access'];
} else {
    $data['access'] = array();
}

с этим:

$permission_access = $this->input->post('permission');
if (isset($permission_access)) {
    if (isset($permission_access['access'])) {
        $data['access'] = $permission_access['access'];
    } elseif ($user_group_info['permission']['access']) {
        $data['access'] = $user_group_info['permission']['access'];
    } else {
        $data['access'] = array();
    }
}
  • 0
    Просто тестирую, но если я отправляю форму и права доступа пустые, это выдает ошибку, потому что нет данных, как я могу обойти это,
  • 0
    добавьте! empty к вашему условному условию. Я обновил свой ответ
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню