PHP warning: count(): Parameter must be an array or an object that implements Countable

Вызов яндекс карт вызывает данную ошибку PHP warning: count(): Parameter must be an array or an object that implements Countable

{$_modx->runSnippet('!yandexMaps', [
'id' => '$_modx->resource.id',
'tpl' => 'tpl.yandexMaps',
'tvCoords' => '28'
])}
Игорь Павлов
24 декабря 2020, 23:04
modx.pro
758
0

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

Артур
25 декабря 2020, 03:18
+1
Я так понимаю не работает вызов? И вы хотите чтобы сниппет не кешировался? Попробуйте убрать из названия!.. Если я ничего не путаю, то вызов снипетов подобным образом по умолчанию не кешируется, в отличие от такой записи
{'SnippetName'|snippet}
    Игорь Павлов
    25 декабря 2020, 13:45
    0
    Спасибо.

    Ошибку убрал отключив кэширование для этого сниппета. Конечно, не совсем верное решение, но для моей ситуации подходящее.
      Александр Мельник
      25 декабря 2020, 14:48
      0
      Артур, мне прямо стала интересна ваша логика.
      Поделитесь пожалуйста.
      Автор пишет, что у него при запуске сниппета выскакивает ошибка, что передаваемый параметр должен быть массивом или представлять собой нечто из разряда «Countable».

      Что здесь говорит о том, что автор хочет отключить кеширование?)) И тем не менее это помогает. Мой мозг в недоумении))

      Я на днях находился в подобном недоумении. Общение с заказчиком по одному проекту ведется у нас только через директора. Директор у нас женщина и заказчик — женщина. Я час рассказывал директору что и как нужно спросить, потому что вопрос технический. Она задает вопрос заказчику, я с ужасом понимаю что вопрос вообще про другое, от слова совсем. Заказчик женщина читает вопрос, дает ответ, который тоже не имеет никакого отношения к вопросу и тем не менее ответ оказывается вполне приемлемым для меня. Я подумал что в тот момент я впервые за 40 лет понял что такое, женская логика)
        Артур
        25 декабря 2020, 15:02
        0
        Да всё просто, '!yandexMaps' так пишут когда хотят чтобы сниппет некешировался, только в том варианте который предложил автор это не работает, там он и так не кешируется. А дальше тут уже и про TV написали и вообще всё заработало)))
      Александр Мельник
      25 декабря 2020, 08:35
      0
      'tvCoords' => '28'
      судя по названию этого параметра там должно быть название ТВ поля, в котором будут указаны координаты, а не просто строка.
        Игорь Павлов
        25 декабря 2020, 13:43
        0
        Это уже были эксперименты, сюда нечаяно попало.
        В любом случае дело не в этом.
        Иван Бочкарев
        25 декабря 2020, 10:17
        0
        В примере документации, да и как во всех вызовах в поле указания TV указывается название, а не ID

        'tvCoords'=>'coords'
          Наумов Алексей
          25 декабря 2020, 13:31
          0
          Как минимум вот это '$_modx->resource.id' должно быть без кавычек.
          R2m0x94 (Vasily)
          28 февраля 2022, 15:00
          0
          А у меня стоит на submit minishop2 «msCustomerAutoReg», и он при создании нового пользователя, когда логгинет в ЛК, выдаёт это предупреждение на стоках core/model/modx/error/moderror.class.php:168 и 250, пока временно внёс правки хотя знаю, что так делать нельзя.

          168 строка
          if (is_array($this->errors) || is_object($this->errors)) {
              $count_errors = count($this->errors);
          } else {
              $count_errors = '';
          }
          return array (
              'success' => $status,
              'message' => $this->message,
              'total' => isset ($this->total) && $this->total != 0 ? $this->total : $count_errors,
              'errors' => $this->errors,
              'object' => $objarray,
          );
          250 строка
          public function hasError() {
              if (is_array($this->errors) || is_object($this->errors)) {
                  $count_errors = count($this->errors);
              }
              return $count_errors > 0 || $this->message != '';
          }
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            10