Codeigniter глобальные переменные - PullRequest
0 голосов
/ 05 января 2012

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

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

    class Config extends CI_Controller
    {
        public $languages = '';
        public $languages_en = '';

        function __construct() {
            parent::__construct();

            $this->languages = array('ar', 'cn', 'fr', 'de', 'it', 'jp', 'kr', 'pl', 'pt', 'ru', 'es', 'sk');

            $this->languages_en = array('ar', 'cn', 'fr', 'de', 'it', 'jp', 'kr', 'pl', 'pt', 'ru', 'es', 'sk', 'en');  
        }
    }
?>

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

Это лучший способ сделать это?Или есть лучший способ создать глобальную переменную в CI?Кстати, имя моего класса - проблема?

1 Ответ

1 голос
/ 05 января 2012

Да, Config не будет разрешенным именем класса, так как CI уже имеет класс Config.

Однако я бы создал файл конфигурации для хранения этих массивов и просто загружал этот файл при необходимости.

Документы: http://ellislab.com/codeigniter/user_guide/libraries/config.html

Таким образом, в вашем конфигурационном файле /application/config/languages.php вы должны поместить это:

$config['languages'] = array('ar', 'cn', 'fr', 'de', 'it', 'jp', 'kr', 'pl', 'pt', 'ru', 'es', 'sk');

$config['languages_en'] = array('ar', 'cn', 'fr', 'de', 'it', 'jp', 'kr', 'pl', 'pt', 'ru', 'es', 'sk', 'en');

Затем, в ваших контроллерах, вы можете сделатьэто:

$this->config->load('languages');
$lang = $this->config->item('languages');
$lang_en = $this->config->item('languages_en');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...