Multix TV список выбора не сохраняет значения

У меня есть список выбора ТВ нескольких типов, который оценивает фрагмент:

@EVAL return $modx->runSnippet('getFeaturedResourceTree');

Оценивая этот фрагмент:

<?php
$output = array();

$context = $modx->resource->get('context_key'); 

$sql = "select * from modx_site_content where context_key = '$context' order by `pagetitle`;";

$results = $modx->query($sql);

foreach($results as $result){

    $output[] = $result['pagetitle'].'=='.$result['id'];

}

$output = implode('||', $output);

echo  $output;

return;

Это работает в диспетчере, я могу выбрать и выбрать несколько ресурсов в списке. Однако, когда я сохраняю телевизор, на самом деле ничего не сохраняется. Значения TV отсутствуют в базе данных, и когда я перезагружаю ресурс, поле TV остается пустым.

в чем может быть проблема?

1 ответ

Решение

Я вполне уверен, что вы можете сделать то, что вы пытаетесь сделать с @SELECT обязательный, а не @EVAL, Это имеет 2 потенциальных преимущества:

  1. @EVAL зло, лол. Не все время, заметьте, конечно, есть законное использование @EVAL но я лично всегда очень старался найти альтернативу, когда бы я ни думал об использовании @EVAL,
  2. Метод, который я собираюсь показать вам, работал для меня в прошлом, поэтому я предполагаю, что он будет работать для вас.

    @ ВЫБРАТЬ заголовок страницы, id ИЗ modx_site_content WHERE context_key = 'web' ORDER BY `pagetitle`

Если вы используете @EVAL поскольку у вас есть несколько контекстов, и вы хотите, чтобы контекст ресурса в настоящее время редактировался, вы можете использовать ваш сниппет, но я бы попробовал:

  1. Вместо того, чтобы отражать ваш вывод, верните его.
  2. Вызовите фрагмент в чанке и визуализируйте чанк на тестовой странице, чтобы убедиться, что у него есть нужный вывод, отформатированный для параметров ввода ТВ, именно так, как и должно быть.
  3. Если выход Chunk прошел тест, вызовите его в поле TV Input Options с помощью @CHUNK связывание.

Еще одно примечание: я не могу вспомнить, доступен ли текущий Ресурс на ТВ как $modx->resource или же $resource, но это может быть что-то, что вы хотите перепроверить.

Другие вопросы по тегам