[Решено] Fenom и integer

Как привести переменную фенома к типу integer?
Дело в том, что у меня очень много id страниц находятся в словарях и вызываю я их таким образом:
{$_modx->makeUrl($_modx->lexicon('link_contacts'))}
Всё вроде бы работает, но в лог постоянно сыпятся подобные строки:
[2015-11-27 09:36:05] (ERROR @ /index.php) `link_contacts` is not a valid integer and may not be passed to makeUrl()
[2015-11-27 09:36:05] (ERROR @ /index.php) `link_sitemap` is not a valid integer and may not be passed to makeUrl()
...
Варианты типа
{int()$_modx->lexicon('page.id.34')}
ни к чему не привели, только феном ломают.

Что делать в таком случае?
Василий Столейков
27 ноября 2015, 06:51
modx.pro
1
1 902
0
Поблагодарить автора Отправить деньги

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

Василий Наумкин
27 ноября 2015, 09:54
0
Судя по логам, у тебя лексикон не загружен и текст в циферку не превращается.

Ну и вообще, использовать лексикон для хранения системных настроек — свежее решение. Действительно, сколько можно хранить настройки контекстов в настройках контекстов? Надо же что-то новенькое придумать =)
    Василий Столейков
    27 ноября 2015, 10:05
    0
    Интересно, хотя я в head всех страниц засунул загрузку лексикона
    {$_modx->lexicon->load('core:default')}
    и на сайте ссылки формируются нормально! Просто сайт большой, и на каких-то страницах наверное не подгружается. Мне наверное стоит лексикон загружать в каждом чанке где есть вызов лексиконов...

    Ну и вообще, использовать лексикон для хранения системных настроек — свежее решение.
    Не додумался сразу, классная мысль. Но дело в том, что сайт на 3-х языках, и структура сайта такая, что требует для каждого языка похожим страницам один id. И таких ссылок очень много, от 200 и выше. В процессе разработки мне было проще это в лексиконы забивать, просто представляю себе как бы мне нужно было бы бегать по контекстам и забивать туда в настройки то, что в лексиконах проще вбить. И как бы назывались эти системные настройки, так: [[++lexicon.page.id.118]]?
      Василий Наумкин
      27 ноября 2015, 10:19
      0
      Чем проще-то? Открывать меньше страниц, или что? Или у тебя браузер не поддерживает вкладки и настройки сразу 3х контекстов открыть не позволяет? Я уж молчу про работу напрямую с БД.

      Разница в том, что лексикон нужно грузить, а настройки — нет, они сами загружаются при инициализации контекста и такой проблемы не будет.

      И как бы назывались эти системные настройки
      Как назовёшь, так и будет. В твоём примере, очевидно [[!++link_contacts]]

      Ну и вообще, если нужно указывать 200 id страниц в настройках — что-то не так с этим сайтом.
        Василий Столейков
        27 ноября 2015, 10:25
        0
        Разница в том, что лексикон нужно грузить, а настройки — нет, они сами загружаются при инициализации контекста и такой проблемы не будет.
        Сайт делался до переписки на феном, и о отдельной загрузке лексиконов я и не подозревал, именно поэтому и записывал все свои лексиконы в core:default, т.к. он по умолчанию был загружен.

        Ну и вообще, если нужно указывать 200 id страниц в настройках — что-то не так с этим сайтом.
        Да, согласен, сайт весьма специфичен, и выкрутиться по другому не получилось — этого требовала логика сайта.

        Спасибо, буду иметь ввиду на будущее!
          Василий Столейков
          27 ноября 2015, 10:31
          +1
          Действительно, я наверное подумаю потихоньку начать переносить лексиконы в настройки… Спасибо за здравую идею!
        Василий Столейков
        27 ноября 2015, 10:22
        0
        Похоже ты прав, где-то у меня не загружаются лексиконы в цыферку…
        Буду искать эти места на сайте, потому что ещё куча пустых значений в makeUrl() передаются, а это значит что не подставляется значение…

        А насчёт link_contacts — это очень странно, т.к. он встречается только в одном месте на сайте и выводится правильно:
        {var $link_contacts = $_modx->lexicon('link_contacts')}
        <a href="{$_modx->makeUrl($link_contacts)}" class="active">
            {$_modx->runSnippet('pdoField',['id' => $link_contacts, 'field' => 'menutitle'])}
        </a>
        Может быть где-то не успевает подгрузиться… буду ещё проверять…
          Alexandr
          27 ноября 2015, 12:31
          0
          Василий. Это хорошо, что вы все же работаете и находитесь в сети, что подтверждает данный комментарий. Но не могли бы вы отвлечься, и ответить на мой, уже не первый не второй и не третий вопрос. Иначе мы с вами будем по другому вопрос решать.
            Василий Столейков
            27 ноября 2015, 12:33
            0
            Через полчаса смогу включить скайп и напишу вам.
              Alexandr
              27 ноября 2015, 15:09
              0
              3 часа прошло
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9