2

出于某些原因,我不希望我的用户进行编辑/app/config/config.php以添加数据库凭据,但是在一个单独的文件中,他们将它们添加为一个数组,而我/app/config/config.php的是 PHP,而不是 YAML 或 XML,所以我怎么知道/app/config/config.php将数据库凭据作为来自另一个文件的数组?

我确实看过一个像这样工作的应用程序,我看到他们使用:

$container->loadFromExtension('doctrine', array(
 'orm' => array(
  'auto_generate_proxy_classes' => false,
  'default_entity_manager' => 'default',
  'entity_managers' => array(
   'default' => array('mappings' => array('MyApp' => array('type' => 'staticphp')), 'class_metadata_factory_name' => 'Doctrine\\ORM\\Mapping\\StaticClassMetadataFactory')
  )
 ),
 'dbal' => array(
  'default_connection' => 'default',
  'connections' => array(
   'default' => array('host' => 'from_user_config.db', 'logging' => true),
   'read' => array('host' => 'from_user_config.db_read', 'logging' => true)
  )
 )
));

由于它没有记录在案,如果您澄清我如何按照我描述的方式执行此操作,我将不胜感激?

4

1 回答 1

1

虽然在 Qoop 提供的文章中有解释,但我必须承认解释有点模糊,所以我将详细说明以防对您有所帮助。

首先,在您app/config/config.php包含以下行。

// app/config/config.php
$loader->import('my_custom_parameters.php');

创建文件my_custom_parameters.php(文档的例子,我稍后会提供我的)。

// app/config/my_custom_parameters.php
include_once('/path/to/drupal/sites/default/settings.php');
$container->setParameter('drupal.database.url', $db_url);

在文档的示例中,还有另一个导入,以防您希望将设置存储在其他地方。这样做不是强制性的,您可以根据需要直接包含变量parameters.php

为简单起见,我将摆脱include_once并直接修改凭据。

// app/config/my_custom_parameters.php
$container->setParameter('database_name', 'the_db_I_want');
$container->setParameter('database_user', 'the_user_I_want');
$container->setParameter('database_password', 'the_pass_I_want');

如您所见,您可以根据需要覆盖任意数量的参数。

更新

您也可以试试这个(尚未测试,但认为可行):

// app/config/my_custom_parameters.php
include_once('/path/to/where/people/can/modify/settings.php');
$container->loadFromExtension('doctrine', array(
 'orm' => array(
  'auto_generate_proxy_classes' => $variable_from_settings_php,
  'default_entity_manager' => $another_variable_from_settins_php,
  'entity_managers' => array(
   'default' => array('mappings' => array('MyApp' => array('type' => 'staticphp')), 'class_metadata_factory_name' => 'Doctrine\\ORM\\Mapping\\StaticClassMetadataFactory')
  )
 ),
 'dbal' => array(
  'default_connection' => 'default',
  'connections' => array(
   'default' => array('host' => 'from_user_config.db', 'logging' => true),
   'read' => array('host' => 'from_user_config.db_read', 'logging' => true)
  )
 )

我正在使用您提供的代码。您可以使用您喜欢的配置。我添加了一些可以从作为参数值导入的文件中加载的虚拟变量,只是为了向您展示,理论上,您可以做类似的事情。

正如您在文档中所读到的(关于设置 bd 的部分,称为“配置数据库”):

通过 parameters.yml 定义配置只是一个约定。该文件中定义的参数在设置 Doctrine 时被主配置文件引用

试一试,让我知道它是否有效。

希望它更清楚。

于 2015-01-02T18:44:31.900 回答