Почему в CodeIgniter появляется ошибка «Вызов функции-члена при нулевом значении» при вызове функции Controller to Library? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь вызвать библиотечную функцию с моего контроллера, но получаю ошибку

Исключение: вызов функции-члена items_upload () для null / usr / local / www/public_html / pos_clcdesq / application / controllers / Config. php 1022

Я думаю, что эта ошибка обычно означает, что у контроллера нет доступа к функции библиотеки, но, как вы можете видеть из моего конструктора, я загрузил библиотеку. Что мне здесь не хватает?

Конструктор контроллера:

public function __construct()
{
    parent::__construct('config');

    $this->load->library('barcode_lib');
    $this->load->library('sale_lib');
    $this->load->library('Clcdesq_integration_lib');
}

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

public function initial_items_upload()
{
    $this->Clcdesq_integration_lib->items_upload();
}

Конструктор библиотеки и функция items_upload:

class Clcdesq_integration_lib
{
private $CI;
private $api_key;
private $api_url;

/**
 * Constructor
 */
public function __construct($api_key = '')
{
    $this->CI =& get_instance();

    $this->api_key  = $this->CI->encryption->decrypt($this->CI->Appconfig->get('clcdesq_api_key'));
    $this->api_url  = $this->CI->encryption->decrypt($this->CI->Appconfig->get('clcdesq_api_url'));
}

public function items_upload()
{
    $all_items = json_decode(json_encode($this->CI->Item->get_all(), JSON_UNESCAPED_UNICODE), true);

    foreach($all_items as $item)
    {
        $item_data[] = json_decode(json_encode($this->CI->Item->get_info($item['item_id']), JSON_UNESCAPED_UNICODE), true);
    }

    $pushdata   = $this->populate_api_data($item_data);

    if (version_compare(phpversion(), '7.1', '>='))
    {
        ini_set( 'precision', 17 );
        ini_set( 'serialize_precision', -1 );
    }

    $json = json_encode($pushdata, JSON_UNESCAPED_UNICODE);

    $clcdesq_guid = $this->send_data($this->api_url, $this->api_key, $json);

    log_message("ERROR", "New Product JSON Results: $json");
    log_message("ERROR", "API Results: $clcdesq_guid");
}

Я вызываю функцию из вида:

        <div class="form-group form-group-sm">
            <?php echo form_label($this->lang->line('config_clcdesq_utilities'), 'config_clcdesq_items_upload', array('class' => 'control-label col-xs-2')); ?>
            <div class='col-xs-2'>
                <div id="items_upload" class="btn btn-default btn-sm">
                    <span style="top:22%;"><?php echo $this->lang->line('config_clcdesq_items_upload'); ?></span>
                </div>
            </div>
        </div>

$("#items_upload").click(function() {
    window.location='<?php echo site_url('config/initial_items_upload') ?>';
});

1 Ответ

1 голос
/ 08 апреля 2020

В прошлом у меня были некоторые проблемы с библиотеками, начинающимися с заглавных букв. Измените на нижний регистр (имя файла + способ загрузки библиотеки в контроллер) и посмотрите, что произойдет.

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