Drupal: count (): параметр должен быть массивом или объектом, который реализует счетное - PullRequest
0 голосов
/ 17 мая 2019

Предупреждение: count (): Параметр должен быть массивом или объектом, который реализует Countable в invTranslate_translated_menu_link_alter () (строка 55 из \ sites \ all \ modules \ custom \ invTranslate \ invTranslate.module).

invTranslate.module - пользовательский модуль.

function invTranslate_translated_menu_link_alter(&$item) {
  static $nodeMenu;
  if ($nodeMenu === NULL) {
    if (arg(0) == 'node' && count(arg() == 3 && (arg(1) == 'add' || arg(2) == 'edit'))) {
      $nodeMenu = true;
      ...

Строка 55: if (arg(0) == 'node' && count(arg() == 3 && (arg(1) == 'add' || arg(2) == 'edit'))) {.Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

arg () Возвращает компонент текущего пути Drupal. Например, при просмотре страницы по пути «admin / структура / типы» arg (0) возвращает «admin», arg (1) возвращает «структуру», а arg (2) возвращает «типы». https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/arg/7.x

В durpal пути для узлов такие же, как эти

  • / узел / добавить / {узел типа} /
  • / узел / {NID} / редактировать
  • / узел / {NID}

Оглядываясь назад на код: if (arg(0) == 'node' && count(arg() == 3 && (arg(1) == 'add' || arg(2) == 'edit')))

Я думаю, это условие должно пройти только для первых двух путей, которые я упомянул. Таким образом, изменение кода на следующее должно привести к ожидаемому поведению: if (arg(0) == 'node' && count(arg()) == 3 && (arg(1) == 'add' || arg(2) == 'edit'))

Функция count () должна только проверять, достаточно ли у нас компонентов в пути.

1 голос
/ 17 мая 2019

Мне кажется, это простая опечатка, однако это зависит от того, что должен делать ваш код. Я разделил код на несколько строк для лучшей читаемости:

if (
    arg(0) == 'node'
    && count(arg() == 3   //the count method takes as param the bool from the row below too
    && (arg(1) == 'add' || arg(2) == 'edit'))
) {

Вместо этого это должно выглядеть так:

 if (
    arg(0) == 'node'
    && count(arg()) == 3   // add right bracket after arg()
    && (arg(1) == 'add' || arg(2) == 'edit')   // remove right bracket from here
) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...