[Решено] Fenom и integer
Как привести переменную фенома к типу integer?
Дело в том, что у меня очень много id страниц находятся в словарях и вызываю я их таким образом:
Что делать в таком случае?
Дело в том, что у меня очень много 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')}
ни к чему не привели, только феном ломают.Что делать в таком случае?
Поблагодарить автора
Отправить деньги
Комментарии: 9
Судя по логам, у тебя лексикон не загружен и текст в циферку не превращается.
Ну и вообще, использовать лексикон для хранения системных настроек — свежее решение. Действительно, сколько можно хранить настройки контекстов в настройках контекстов? Надо же что-то новенькое придумать =)
Ну и вообще, использовать лексикон для хранения системных настроек — свежее решение. Действительно, сколько можно хранить настройки контекстов в настройках контекстов? Надо же что-то новенькое придумать =)
Интересно, хотя я в head всех страниц засунул загрузку лексикона
{$_modx->lexicon->load('core:default')}
и на сайте ссылки формируются нормально! Просто сайт большой, и на каких-то страницах наверное не подгружается. Мне наверное стоит лексикон загружать в каждом чанке где есть вызов лексиконов...Ну и вообще, использовать лексикон для хранения системных настроек — свежее решение.Не додумался сразу, классная мысль. Но дело в том, что сайт на 3-х языках, и структура сайта такая, что требует для каждого языка похожим страницам один id. И таких ссылок очень много, от 200 и выше. В процессе разработки мне было проще это в лексиконы забивать, просто представляю себе как бы мне нужно было бы бегать по контекстам и забивать туда в настройки то, что в лексиконах проще вбить. И как бы назывались эти системные настройки, так: [[++lexicon.page.id.118]]?
Чем проще-то? Открывать меньше страниц, или что? Или у тебя браузер не поддерживает вкладки и настройки сразу 3х контекстов открыть не позволяет? Я уж молчу про работу напрямую с БД.
Разница в том, что лексикон нужно грузить, а настройки — нет, они сами загружаются при инициализации контекста и такой проблемы не будет.
Ну и вообще, если нужно указывать 200 id страниц в настройках — что-то не так с этим сайтом.
Разница в том, что лексикон нужно грузить, а настройки — нет, они сами загружаются при инициализации контекста и такой проблемы не будет.
И как бы назывались эти системные настройкиКак назовёшь, так и будет. В твоём примере, очевидно [[!++link_contacts]]
Ну и вообще, если нужно указывать 200 id страниц в настройках — что-то не так с этим сайтом.
Разница в том, что лексикон нужно грузить, а настройки — нет, они сами загружаются при инициализации контекста и такой проблемы не будет.Сайт делался до переписки на феном, и о отдельной загрузке лексиконов я и не подозревал, именно поэтому и записывал все свои лексиконы в core:default, т.к. он по умолчанию был загружен.
Ну и вообще, если нужно указывать 200 id страниц в настройках — что-то не так с этим сайтом.Да, согласен, сайт весьма специфичен, и выкрутиться по другому не получилось — этого требовала логика сайта.
Спасибо, буду иметь ввиду на будущее!
Действительно, я наверное подумаю потихоньку начать переносить лексиконы в настройки… Спасибо за здравую идею!
Похоже ты прав, где-то у меня не загружаются лексиконы в цыферку…
Буду искать эти места на сайте, потому что ещё куча пустых значений в makeUrl() передаются, а это значит что не подставляется значение…
А насчёт link_contacts — это очень странно, т.к. он встречается только в одном месте на сайте и выводится правильно:
Буду искать эти места на сайте, потому что ещё куча пустых значений в 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>
Может быть где-то не успевает подгрузиться… буду ещё проверять…
Василий. Это хорошо, что вы все же работаете и находитесь в сети, что подтверждает данный комментарий. Но не могли бы вы отвлечься, и ответить на мой, уже не первый не второй и не третий вопрос. Иначе мы с вами будем по другому вопрос решать.
Через полчаса смогу включить скайп и напишу вам.
3 часа прошло
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.