代码之家  ›  专栏  ›  技术社区  ›  Mr. ED

错误显示在我的视图codeigniter中

  •  0
  • Mr. ED  · 技术社区  · 9 年前

    我的观点有一个错误,我正在试图找出原因,但不知道如何纠正。

    遇到PHP错误

    严重性:警告

    消息:in_array()要求参数2为数组,给定布尔值

    解决这个问题的最佳方法是什么我认为这与我的帖子有关 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);
    }
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   CodeGodie    9 年前

    我相信问题出在你的控制器上,就像你最初说的那样。试试看:

    在控制器中,替换此项:

    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();
        }
    }