• Блог
  • Используем $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);
    

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

    17 декабря 2015, 17:29   3139     3

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

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

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

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