API конфигурации Drupal 8 - не может получить доступ к переменным


Я привел простой пример для практики использования api конфигурации в drupal 8. Я создал следующий файл twitter_pull.credentials.yml в папке конфигурации/установки:

oauth_access_token: "12345"
oauth_access_token_secret: "67890"
consumer_key: "54321"
consumer_secret: "09876"

И очистил мой кэш. В пользовательском блоке я ввел конфигурацию

$config = \Drupal::config('twitter_pull.credentials');

И когда я сделал dpm

dpm($config);

Я не получил нулевого результата. Однако, когда я попытался получить доступ к свойству:

drupal_set_message($config->get('consumer_key'));

Теперь результат был нулевым. Даже когда я пытался использовать объект конфигурации, который уже существует

 $enabled = \Drupal::config('system.maintenance')->get('enabled');
dpm($enabled);

Он по-прежнему возвращал значение null. Что я здесь упускаю?

РЕДАКТИРОВАТЬ: Если это чем-то поможет, вот полный код:


namespace Drupal\twitter_pull\Plugin\Block;
use Drupal\block\BlockBase;

/**
 * Provides a block for executing PHP code.
 *
 * @Block(
 *   id = "twitter_pull_tweets_block",
 *   admin_label = @Translation("Twitter Tweets")
 * )
 */
class TweetsBlock extends BlockBase {

  /**
   * Builds and returns the renderable array for this block plugin.
   *
   * @return array
   *   A renderable array representing the content of the block.
   *
   * @see \Drupal\block\BlockViewBuilder
   */
  public function build() {
    $config = \Drupal::config('twitter_pull.credentials');
    $enabled = \Drupal::config('system.maintenance')->get('enabled');
    dpm($enabled);
    dpm($config);
    drupal_set_message($enabled);
    return 'this is a block: ' . $config->get('consumer_key');
  }
}

Author: kiamlaluno, 2014-08-18

1 answers

Чтобы уточнить ответы @dawehner, конфигурация по умолчанию не кэшируется.

Он импортируется только при установке модуля. После этого, если вы внесете изменения в конфигурацию по умолчанию, единственный способ добавить ее в существующие установки - написать функцию обновления, которая добавит ее вручную.

Во время разработки существуют модули, такие как Разработка конфигурации, которые могут автоматизировать этот процесс, но они, очевидно, не будут присутствовать ни на одном производительном установки.

 9
Author: Berdir, 2014-08-20 06:30:11