Как можно прочитать application.ini на контроллере, используя Zend Framework - PullRequest
2 голосов
/ 18 апреля 2011

У меня есть эти строки в моем application.ini

как мне прочитать user в моем контроллере

resources.doctrine.dbal.connections.default.parameters.driver   = "pdo_mysql"
resources.doctrine.dbal.connections.default.parameters.dbname   = "zc"
resources.doctrine.dbal.connections.default.parameters.host = "localhost"
resources.doctrine.dbal.connections.default.parameters.port = 3306
resources.doctrine.dbal.connections.default.parameters.user = "root"
resources.doctrine.dbal.connections.default.parameters.password = "123456"

Я использую этот код, но он возвращается null

$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
 $user = $bootstrap->getOption('user');
var_dump($user);

редактирование: Как я могу прочитать все соединения опции?

Ответы [ 6 ]

6 голосов
/ 18 апреля 2011

Я думаю, вы должны использовать

$this->getInvokeArgs('bootstrap');

Для получения дополнительной информации см. Эту главу в руководстве.

Как насчет использования

$conf = $bootstrap->getOption('resources');
$dbConf = $conf['doctrine']['dbal']['connections']['default']['parameters'];
3 голосов
/ 18 апреля 2011

Как насчет чего-то вроде:

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
$connectionParams = $config->resources->doctrine->connections;

Или во время Bootstrap создайте и сохраните этот объект $config в Bootstrap или в Zend_Registry для последующего поиска в вашем контроллере.

1 голос
/ 30 августа 2012

Это идет в вашем контроллере.

$bootstrap = $this->getInvokeArg('bootstrap');
$appinidata = $bootstrap->getOptions();
$user=$appinidata['resources']['doctrine']['dbal']['connections']['default']['parameters'] ['user'];

Это должно вывести «root».

print_r($user);
0 голосов
/ 11 ноября 2013

вы можете установить любую переменную, используя метод set, как показано в index.php внутри публичной папки. Let

$ config = 'test'; Zend_Registry :: set ('config', $ config);

как только переменная будет установлена, вы можете получить доступ к любым контроллерам / моделям следующим методом

Zend_Registry :: get ('config');

Надеемся, что это поможет !!

0 голосов
/ 29 августа 2013

В этом случае вы должны использовать Zend_Config_Ini class

$config = new Zend_Config_Ini('/path/to/config.ini','staging',$options);

второй параметр - раздел в файле INI должен быть загружен; третий параметр - ключ, позволяющий изменить загруженный файл.

Вы можете указать значение user следующим образом:

$config->resources->doctrine->dbal->connections->default->parameters->user;
0 голосов
/ 18 апреля 2011

Чтобы получить доступ к ресурсу контейнера Doctrine, просто используйте:

$bootstrap = $this->getInvokeArg('bootstrap');
$doctrine = $bootstrap->getResource('doctrine');

Оттуда вы можете перейти к имени пользователя соединения по умолчанию (вы можете указать соединение при необходимости, просто передайте имясоединения в вызове getConnection):

$username = $doctrine->getConnection()->getUsername();
...