Предупреждения об ошибках контроллера Codeigniter. undefined функция db item и объявления совместимы - PullRequest
0 голосов
/ 04 января 2019

Я работаю над сценарием, который я загружаю онлайн, но когда я устанавливаю codeigniter, он приносит это.

 Severity: Warning

Message: Declaration of MY_Lang::line($line = '') should be compatible with CI_Lang::line($line, $log_errors = true)

Filename: core/MY_Lang.php

Line Number: 41

А вот и мой контроллер

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Lang extends CI_Lang {

    // --------------------------------------------------------------------

    /**
     * Load a language file
     *
     * @access  public
     * @param   mixed   the name of the language file to be loaded. Can be an array
     * @param   string  the language (english, etc.)
     * @param   bool    return loaded array of translations
     * @param   bool    add suffix to $langfile
     * @param   string  alternative path to look for language file
     * @return  mixed
     */
    function load($langfile = '', $idiom = '', $return = FALSE, $add_suffix = TRUE, $log_errors = TRUE, $alt_path = '', $line ='')
    {       
        parent::load($langfile, $idiom, $return, $add_suffix, $alt_path, $log_errors, $line);
    }

    function get_array()
    {
        return $this->language;
    }

    function line($line = '')
    {
        $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];

        // Because killer robots like unicorns!
        if ($value === FALSE)
        {
            log_message('debug', 'Could not find the language line "'.$line.'"');
        }

        return $value;
    }

}

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

С другой стороны, вторая ошибка, которая отскакивает от меня, заключается в следующем

Message: Call to undefined function config_db_item()

Filename: /home/casabla6/public_html/application/core/MY_Loader.php

и в контроллере у меня есть это.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Loader extends CI_Loader
{
   function __construct()
   {
      parent::__construct();

      $this->_ci_view_paths += array(FCPATH.'templates/'=>TRUE);
   }

    public function view($view, $vars = array(), $return = FALSE)
    {
        $admin_template = '';
        if( config_db_item ('admin_template') !== FALSE)
            $admin_template = config_db_item('admin_template');


        if(strpos($view, 'admin/') === 0)
            $view = $admin_template.'/'.$view;

        if(isset($vars['subview']))
        {
            if(strpos($vars['subview'], 'admin/') === 0)
                $vars['subview'] = $admin_template.'/'.$vars['subview'];
        }

        return parent::view($view, $vars, $return);
    }

    function common_view($view, $vars = array(), $return = FALSE)
    {
        $view = 'common/'.$view;

        return parent::view($view, $vars, $return);
    }

}

?>

Можете ли вы дать мне руку, пожалуйста?

1 Ответ

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

Ваш класс MY_Lang расширяет CI_Lang, что означает, что метод MY_Lang::line() должен иметь определение, соответствующее методу CI_Lang::line().

Оригинальный метод в CI_Lang:

public function line($line, $log_errors = true)

Ваш добавочный номер в MY_Lang:

public function line($line = '')

Вам нужно будет изменить свой код, чтобы принимать те же аргументы:

public function line($line, $log_errors = true)
...