• Блог
  • Используем $modx->getOption()

Метод $modx->getOption() один из основных методов MODX. Очень часто он используется для получения какой-либо системной настройки.

mixed getOption (string $key [, array|null $options [, mixed $default [, boolean $skipEmpty]]] )
  • $key — ключ настройки, который нужно найти.
  • $options — ассоциативный массив или NULL. Если указано последнее, то поиск будет производится в системных настройках. В противном случае, ключ будет искаться в указанном массиве.
  • $default — значение по-умолчанию, которое будет передано методом, если настройка с указанным ключом не найдена.
  • $skipEmpty — если установлено в true, то значение по-умолчанию будет передано не только когда ключ не найден, но и когда возвращается пустая строка.

Примеры вызова

Найдем значение системной настройки «some_setting».

$value = $modx->getOption('some_setting');
Если эта настройка не найдена, то в $value будет NULL. Но у getOption() есть возможность в этом случае передать значение по-умолчанию. Для этого нужно задействовать третий параметр.
$value = $modx->getOption('some_setting', null, 'default value');
В этом случае метод getOption() вернет или значение системной настройки или значение по-умолчанию. Очень удобно. А если настройка найдена, но она пустая. Что делать? Для этого существует четвертый параметр $skipEmpty.
$value = $modx->getOption('some_setting', null, 'default value', true);

Если он установлен в TRUE, то getOption() вернет значение по-умолчанию и в случае, если настройка не найдена и если она пустая. Это иногда очень выручает. Причем, в отличие от метода empty() PHP, он считает пустой только строку. Т.е. значение 0 не считается пустым и, соответственно, значение по-умолчанию в данном случае не присвоится.

Использование с массивами

Очень удобно использовать это метод, чтобы получить значение массива. Например, параметры сниппета. Вот такой код заменяет несколько строчек с различными проверками.

$tpl = $modx->getOption('tpl', $scriptProperties, 'myTpl', true);

Такой прием можно использовать и в других случаях

$option = $modx->getOption('secret_key', $_SESSION, null);
$option = $modx->getOption('product_id', $_GET, 0);
$option = $modx->getOption('user_email', $_POST, '', true);

Подробнее можно почитать на официальном сайте или у Боба Рея.

0   9926

Комментарии ()

  1. Сергей 27 ноября 2017 # 0
    Добрый день! Подскажите пожалуйста почему-то часть системных получается с помощью $modx->getOption(), а часть не получаются, вместо указанного значения параметра в админке получается пустая строка… Подскажите пожалуйста в какую строну копать ато что-то первый раз с таким столкнулся.
    1. Сергей Шлоков 27 ноября 2017 # 0
      Здравствуйте!
      Ну тут только один вариант — эта настройка определяется после того, как вы её запрашиваете.
      1. Сергей 29 ноября 2017 # 0
        Спасибо, помогло:v

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.