We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 49562
    • 25 Posts
    ума не приложу, в чём ошибка

    вызывается сниппет с параметрами:

    [[!getCardFields? &field="content"]]
    


    код сниппета:

    $string = $field;
    if ($string == "content"){
        echo 'good';      // не заходит в if, почему???
    }
    
    $string = "content";
    if ($string == "content"){
        echo 'good';      // заходит в if, всё ок
    }
    
    echo $field;      // "content"
    


    пробовал приводить принудительно $field к строке, использовать strcmp() - не помогает



    [ed. note: olegall last edited this post 11 years, 10 months ago.]
      • 49529
      • 196 Posts
      Параметры сниппета должны быть в таких кавычках - ``, вот так:
      [[!getCardFields? &field=`content`]]
        • 49562
        • 25 Posts
        на самом деле и в таких кавычках проверял. тогда есть различие между
        if ($field == 'content') и if ($field == "content")?
          • 49529
          • 196 Posts
          Смотрите внимательнее.
          Есть двойная кавычка - "
          Есть одинарная - '
          А есть гравис (на клавиатуре - где бува ё) - `. Вот он вам и нужен в вызове снипппета.
          Внутри самого сниппета кавычки ведут себя ровно так, как им и положено в php, никакой своей специфики MODX н добавляет.

          Если дело точно не в кавычках, попробуйте еще в сниппете явно (а не подразумеваемо) получить значение $field
          $field = $scriptProperties['field'])

          А совсем правильно будет даже так:
          $field = $modx->getOption('field', $scriptProperties);

          как описано здесь: http://rtfm.modx.com/revolution/2.x/developing-in-modx/basic-development/snippets/how-to-write-a-good-snippet
            • 49529
            • 196 Posts
            Ну и var_dump($field) тоже можно посмотреть
            Вообще, если у вас echo $field выдает "content" (именно с кавычками), то и передаете вы строку с кавычками. Тогда понятно, почему у вас не работает, ведь content != "content". Если я прав, то
            if ($field == '"content"')

            или
            if ($field == "\"content\"")

            вернет trues

            P.S. Пожалуйста, не забывайте отмечать решенные вопросы как answered. [ed. note: whitebyte last edited this post 11 years, 10 months ago.]