fastField и незаполнное TV поле

вывожу TV поле с помощью такого кода
[[#[[*cap]].uri]]
все работает пока это поле заполнено, если незаполнено выводится в логах ошибка
[2020-05-12 17:32:16] (ERROR @ /var/www/.ru/core/model/modx/modparser.class.php : 541) Could not find snippet with name #.uri.
смысл понятен, я вызываю неизвестно что. вопрос как убрать ошибку?
пробовал такой код
{if $_modx->resource.cap}<a href="[[#[[*cap]].uri]]">аа</a>{else}нет инфы{/if}
«нет инфы» выводится, но ошибки в логах все равно остаются. можно конечно не обращать внимание, но хотелось бы чтобы не засорялся лог ошибок.
Андрей
12 мая 2020, 17:35
modx.pro
870
0

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

Баха Волков
12 мая 2020, 18:39
+2
Используй 1 синтаксис

{if $_modx->resource.cap?}
    <a href="{$_modx->resource.cap | resource : 'uri'}">{$_modx->resource.cap | resource : 'pagetitle'}</a>
    или
    <a href="{$_modx->resource.cap | url}">{$_modx->resource.cap | resource : 'pagetitle'}</a>
{else}
    нет инфы
{/if}

Либо

[[*cap:notempty=`<a href="[[#[[*cap]].uri]]">[[#[[*cap]].pagetitle]]</a>`]]

или

[[*cap:notempty=`<a href="[[~[[*cap]]]]">[[#[[*cap]].pagetitle]]</a>`]]
    Андрей
    12 мая 2020, 23:07
    0
    Спасибо, то что надо
      Андрей
      13 мая 2020, 10:21
      0
      еще вопрос, пошел по первому пути, он больше подходит, но на одной странице есть вызов сниппета
      [[!pdoResources?
              &parents=`137`
              &tpl=`tpl.mprojects`
      	&sortby=`{"pm2":"DESC", "pm1":"DESC"}`
              &where=`{"pagetitle":"[[*id]]"}`
              &limit=`0`
              &showUnpublished=`1`
              &idmem=`[[*id]]`
              &leftJoin=`{
                 "p1": {
                 "class": "modResource",
                 "on": "p1.id = modResource.id"
                  	},
             	  "p2": {
                  	"class": "modResource",
                  	"on": "p2.id = p1.parent"
              		}            							
              		 }`
               &select=`{
              "modResource": "*",
              	"p1": "COALESCE(p1.menuindex, 999999999) as pm1",
              	"p2": "COALESCE(p2.menuindex, 999999999) as pm2"
              }`
                              ]]
      и с ним он конфликтует
      /var/www/data/www/s.ru/core/components/pdotools/model/pdotools/pdotools.class.php : 989) Unexpected token ':' in b7b298b993896f7b869f4d5ffc13576c line 142, near '{"pm2":' <- there
      можно их как-то подружить?
      Павел Романов
      12 мая 2020, 19:40
      +1
      Или выключите системную настройку log_snippet_not_found
        Андрей
        12 мая 2020, 23:08
        0
        Хотелось все же без ошибок быть, а не игнорировать их. Но буду знать, что можно выключать отдельные типы ошибок, спасибо.
        Наумов Алексей
        13 мая 2020, 09:55
        +1
        Создай сниппет ".uri", который ничего не делает.
          R2m0x94 (Vasily)
          14 мая 2020, 00:59
          0
          Я избавился от этой ошибки таким способом
          [[#[[*cap:default=`11`]].uri]]
            Андрей
            14 мая 2020, 10:03
            0
            нет, мне это не подойдет. Вы подставляете дефолтное значение, а мне нежно в одном случае в принципе не выводить ссылку, в другом выводить, но не ссылку, а текст.
              R2m0x94 (Vasily)
              14 мая 2020, 12:48
              0
              У Бахи то что надо. Я просто дефолтным значением например на 404 стр избавился от ошибки в логах, теперь чисто
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            9