【问题标题】:string conversion error in array codeigniter数组codeigniter中的字符串转换错误
【发布时间】:2015-03-19 15:43:45
【问题描述】:

在我的控制器上,我在这条线上有一个错误'edit' => site_url('admin/users_group_controller_update') .'/'. $this->getId($controller)

当我刷新页面时,它会抛出错误数组到字符串转换

遇到 PHP 错误严重性:通知消息:数组到字符串 转换文件名:user/users_group_update.php 行号:47

不知道该怎么做,因为我需要将变量 $controller 添加到 $this->getId($controller);

哪些更改最适合完成这项工作。

<?php

class Users_group_update extends Admin_Controller {

public function __construct() {
    parent::__construct();
    $this->load->model('admin/user/model_user_group');
}

public function index() {

    $data['title'] = "Users Group Update";

    $controller_files = $this->getInstalled($this->uri->segment(3)); 

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

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

    if ($files) {

        foreach ($files as $file) {
            $controller =  basename(strtolower($file), '.php');

            $do_not_list = array(
                'customer_total',
                'dashboard',
                'footer',
                'header',
                'login',
                'logout',
                'menu',
                'online',
                'permission',
                'register',
                'user_total'
            ); 

            if (!in_array($controller, $do_not_list)) {

                $data['controller_files'][] = array(
                    'name' => $controller,
                    'installed' => in_array($controller, $controller_files),
                    'edit' => site_url('admin/users_group_controller_update') .'/'. $this->getId($controller)
                );
            }
        }
    }

    $this->load->view('template/user/users_group_form_update', $data);
}

public function getInstalled($name) {
    $controller_data = array();

    $this->db->select();
    $this->db->from($this->db->dbprefix . 'user_group');
    $this->db->where('name', $name);
    $query = $this->db->get();

    foreach ($query->result_array() as $result) {
        $controller_data[] = $result['controller'];
    }

    return $controller_data;
}

public function getId($controller) {
    $this->db->select();
    $this->db->from($this->db->dbprefix . 'user_group');
    $this->db->where('name', $this->uri->segment(3));
    $this->db->where('controller', $controller);

    $query = $this->db->get();

    return $query->row('user_group_id');
}
}

查看

<?php echo Modules::run('admin/common/header/index');?>

<div id="wrapper">
<?php echo Modules::run('admin/common/menu/index');?>
<div id="page-wrapper" >
<div id="page-inner">

<?php 

$data = array(
'class' => 
'form-horizontal', 
'id' => 
'form-users-group'
);
echo form_open_multipart('admin/users_group_update' .'/'. $this->uri->segment(3), $data);?>

<div class="panel panel-default">
<div class="panel-heading clearfix">
<div class="pull-left" style="padding-top: 7.5px"><h1 class="panel-title"><?php echo $title;?></h1></div>
<div class="pull-right">
<a href="<?php echo base_url('admin/users_group');?>" class="btn btn-primary">Cancel</a>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
<div class="panel-body">

<?php echo validation_errors('<div class="alert alert-warning text-center">', '</div>'); ?>

<div class="form-group">
<?php 
$data = array(
'class' => 'col-sm-2'
);
echo form_label('User Group Name', 'name', $data)
;?>
<div class="col-sm-10">
<?php 
$data = array(
'id' => 'name', 
'name' => 'name', 
'class' => 'form-control', 
'value' => set_value('name')
);
echo form_input($data)
;?>
</div>
</div>

<table class="table table-striped table-bordered">
<thead>
    <tr>
        <td>Controller Name</td>
        <td>Access</td>
        <td>Modify</td>
    </tr>
</thead>
<tbody>
<?php if ($controller_files) { ?>
<?php foreach ($controller_files as $controllers) { ?>
<tr>

<td>
<div class="clearfix">

<div class="pull-left">
<?php echo $controllers['name']; ?>
</div>

<div class="pull-right">

<?php if ($controllers['installed']) { ?>
<span class="label label-success">Installed</span>
<span class="label label-danger"><a style="color: #FFF; text-decoration: none;" href="<?php echo $controllers['edit'];?>">Edit Individual Controller</a></span>
<?php } else { ?>
<span class="label label-primary">Not Installed</span>
<?php } ?>

</div>

</div>

</td>

</tr>
<?php } ?>
<?php } ?>
</tbody>
</table>


</div>
<div class="panel-footer">
</div>
</div><!-- Panel End -->
<?php echo form_close();?>

</div><!-- # Page Inner End -->
</div><!-- # Page End -->

</div><!-- # Wrapper End -->
<?php echo Modules::run('admin/common/footer/index');?>

【问题讨论】:

  • 错误表明函数getId()返回的是一个数组而不是字符串。但是您所做的应该返回列user_group_id 的值。这很奇怪。您可以尝试像 return $query-&gt;row(); 这样返回整行并改用 $this-&gt;getId($controller)-&gt;user_group_id
  • 仍然显示相同的错误。当我点击按钮时,它会显示正确的 ID。
  • 你能解释一下到底发生了什么吗?哪个按钮?
  • Users_group_update 显示安装到数据库或新的控制器列表,当我单击视图中的编辑按钮时,它会将我引导到该控制器,我可以对其进行编辑。示例链接 http://localhost/project/admin /users_group_controller_update/127 在 $data['controller_files'][] 我使用 site_url 进行了编辑。我需要最后一段来获取 id,其中 $this->uri-segment(3) 是用户组的名称和 get where 控制器。有点奇怪为什么显示字符串错误。
  • 我猜id 是第四个 URI 参数。试试这个$this-&gt;uri-&gt;segment(4)

标签: php codeigniter


【解决方案1】:

改变这一行

'edit' => site_url('admin/users_group_controller_update') .'/'. $this->getId($controller)

'edit' => site_url('admin/users_group_controller_update' .'/'. $this->getId($controller))

【讨论】:

  • 有同样的问题,但后来发现唯一可以让它工作的方法是使用 in_array 中的 codeigniter db 函数,如下所示,现在可以正常工作,没有错误。
【解决方案2】:

在我的文件变量中,我必须使用 db 函数才能使其工作。现在没有错误显示全部修复。

<?php

class Users_group_update extends Admin_Controller {

public function __construct() {
    parent::__construct();
    $this->load->model('admin/user/model_user_group');
}

public function index() {

    $data['title'] = "Users Group Update";

    $controller_files = $this->getInstalled($this->uri->segment(3)); 

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

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

    if ($files) {

        foreach ($files as $file) {
            $controller =  basename(strtolower($file), '.php');

            $do_not_list = array(
                'customer_total',
                'dashboard',
                'footer',
                'header',
                'login',
                'logout',
                'menu',
                'online',
                'permission',
                'register',
                'user_total'
            ); 

            if (!in_array($controller, $do_not_list)) {

                $this->db->where('name', $this->uri->segment(3));
                $this->db->where('controller', $controller);
                $query = $this->db->get($this->db->dbprefix . 'user_group');

                if ($query->num_rows()) {

                $row = $query->row();

                $data['controller_files'][] = array(
                    'name' => $controller,
                    'installed' => in_array($controller, $controller_files),
                    'edit' => site_url('admin/users_group_controller_update' .'/'. $row->user_group_id)
                );

                }
            }
        }
    }

    $this->load->view('template/user/users_group_form_update', $data);
}

public function getInstalled($name) {
    $controller_data = array();

    $this->db->select();
    $this->db->from($this->db->dbprefix . 'user_group');
    $this->db->where('name', $name);
    $query = $this->db->get();

    foreach ($query->result_array() as $result) {
        $controller_data[] = $result['controller'];
    }

    return $controller_data;
}
} 

【讨论】:

  • 您不应该在控制器中创建数据库查询并将所有任务放在一个方法中
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 2023-03-11
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多