Fenom модификатор и лексиконы (решено)

Добрый вечер
Подскажите, пожалуйста, как добавить лексиконы в модификатор fenom
код ниже выдает ошибку

<?php
/** @var modX $modx */
switch ($modx->event->name) {
	case 'pdoToolsOnFenomInit':
		$modx->getService('lexicon','modLexicon');
		$modx->lexicon->load('abcd:default');
		$fenom->addModifier('dateformatter', function ($input) {
			switch ($input) {
				case "01":
					$monthname = $modx->lexicon('abcd.month.january');
				break;
			}
		$output = $monthname;
		return $output;
        });
        break;
}
Andrei D.
18 апреля 2017, 18:09
modx.pro
1 697
0

Комментарии: 5

Andrei D.
20 апреля 2017, 08:49
0
#помогите
    Володя
    20 апреля 2017, 09:42
    1
    +2
    $fenom->addModifier("dateformatter", function ($input) use ($modx) {
        switch ($input) {
               case "01":
                  return $modx->lexicon('abcd.month.january');
                  break;
                default:
                  return $input;
          }
    });
      Andrei D.
      20 апреля 2017, 10:30
      0
      большое спасибо!
    Сергей Шлоков
    20 апреля 2017, 09:37
    1
    +2
    Очень много ошибок в коде.

    1. Ты используешь в функции модификатора переменную $modx. А откуда она взялась? Её нужно пробросить через замыкание
    ...
    $fenom->addModifier('dateformatter', function ($input)  use ($modx){
    ...
    2. Загружать сервис не обязательно — он уже загружен.
    3. Этот код содержит лишние строки
    $output = $monthname; // Эта строка для чего?
    return $output;
    // Можно заменить на 
    return $monthname;
    4. Так как $monthname может быть не определена, в switch нужно добавить
    default:
    	$monthname = '';
    Попробуй всё это собрать самостоятельно.
      Andrei D.
      20 апреля 2017, 10:32
      0
      спасибо за развернутый ответ!
      помогло:
      use ($modx){
      код просто для демонстрации, в реальности он выглядит по-другому
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5