We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 12736
    • 259 Posts
    Если необходимо сделать так, чтобы чекбокс в TV-параметрах по умолчанию был отмечен.
    И при его создании заполнены поля:
    Возможные значения - yes||no
    Значение по умолчанию - yes
    То при редактировании страницы чекбокс yes отмечен, но при сохранении документа значение yes в БД не попадает.
      • 785
      • 2,113 Posts
      А зачем что-то писать в базу? Если нет записей о параметре в базе, надо брать значение по умолчанию - то есть все работает верно.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 12736
        • 259 Posts
        @AKots, попробуйте, если получается со временем, смоделировать у себя эту ситуацию. Тут тонкий момент, согласен, но всеже помоему баг. Я ведь установил значение по умолчанию yes, чекбокс при редактировании документа отмечен, документ сохранил, в бд yes не попал.

        Предположим, у нас не один чекбокс а вот так:

        красное,
        синие,
        зеленое,
        белое.

        белое - определено как значением по умолчанию, значения этого в БД нет, туда попадает только красное, синие,зеленое. Мне надо вывести все белое, если бы значение белое было бы в БД никаих проблем. А так мне придется не сладко: определить все id со значением зеленое, все id cо значением синие, тоже сделать для красного. Потом из общего массива id убрать пересечение с "цветными" массивами. И то что не пересеклось вывести. А если у меня есть докуметы для которых вообще не предусмотрены TV параметры - они будут мне мешать получить только белое.
        Но самое паршивое, если я отметил все чекбоксы и белое тоже, то в бд попадет: красное||синие||зеленое||белое. То есть получается, что при одних манипуляциях белое в бд попадает, а при других нет. Всё-тки баг это.
          • 785
          • 2,113 Posts
          Значения по умолчанию (неважно какого типа) в базу данных не записываются. Если, например, я добавил параметр и задал ему значение по умолчанию, всем ранее введенным документам присвоится это значение, хотя реально в базу для каждого документа ничего добавлено не будет. Если требуется обрабатывать базу в своей программе, надо просто находить записи, для которых значение параметра не установлено.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 12736
            • 259 Posts
            Если требуется обрабатывать базу в своей программе, надо просто находить записи, для которых значение параметра не установлено.
            Речь то идет конкретно о MODx о конкретной структуре бд. Как вы отличите в структуре бд MODx, документы в которых значение TV по умолчанию (т.е. там нет никаких значений), от документов для которых вообще не назначено TV параметров. Попробуйте смоделировать приведенную выше "цветную" ситуацию - замучаетесь.

            Значения по умолчанию (неважно какого типа) в базу данных не записываются.
            Это какой-то негласный закон программирования? Если у меня отмечен чекбокс в форме в HTML коде:
            <form method=’post’ action=’Strange_coding_laws.php’>
            <input name=’forAkotsSpecial’ type=’checkbox’ value=’1’ checked>
            <input name=’forAkotsSpecial’ type=’checkbox’ value=’448’>
            <input type=’submit’ name=’go’ value=’GO’>
            </form>
            И что если я просто кликну на кнопку GO в обработчик не попадет значение по умолчанию? Попадет. Почему в данном случае работает одна логика, а в случае MODx другая? Объясните.
              • 785
              • 2,113 Posts
              Quote from: ikarushka at Aug 08, 2009, 04:07 PM

              Почему в данном случае работает одна логика, а в случае MODx другая?
              Потому что не надо мешать все в одну кучу. В MODx обрабатываются значения по умолчанию, но не записываются в соответствующую таблицу.
              Я написал выше – если записывать значения в таблицу, при добавлении нового или смене значения по умолчанию надо переделывать все ранее введенные документы, что нецелесообразно.

              Вообще, в чем проблема? То, что не записываются значения по умолчанию, является не ошибкой, а особенностью системы. Если знаете лучший способ реализации, предложите его разработчикам (но при этом помните, что надо учитывать добавление и редактирование этих значений в разных ситуациях). Сложностей в реализации логики с установленными отдельно значениями по умолчанию нет – разве что подход должен быть немного другим.

              И, кстати,
              $result= $modx->getTemplateVar("tvname");
              echo $result["value"];
              выдает правильное значение, независимо от того, берется значение по умолчанию или из таблицы.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 12736
                • 259 Posts
                И, кстати,
                $result= $modx->getTemplateVar("tvname");
                echo $result["value"];
                выдает правильное значение, независимо от того, берется значение по умолчанию или из таблицы.

                Да это так! Ваша правда, AKots - это не баг. Спасибо за разъяснение. Так-то хитро ))