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 потенциальных преимущества:
@EVAL
зло, лол. Не все время, заметьте, конечно, есть законное использование@EVAL
но я лично всегда очень старался найти альтернативу, когда бы я ни думал об использовании@EVAL
,Метод, который я собираюсь показать вам, работал для меня в прошлом, поэтому я предполагаю, что он будет работать для вас.
@ ВЫБРАТЬ заголовок страницы, id ИЗ modx_site_content WHERE context_key = 'web' ORDER BY `pagetitle`
Если вы используете @EVAL
поскольку у вас есть несколько контекстов, и вы хотите, чтобы контекст ресурса в настоящее время редактировался, вы можете использовать ваш сниппет, но я бы попробовал:
- Вместо того, чтобы отражать ваш вывод, верните его.
- Вызовите фрагмент в чанке и визуализируйте чанк на тестовой странице, чтобы убедиться, что у него есть нужный вывод, отформатированный для параметров ввода ТВ, именно так, как и должно быть.
- Если выход Chunk прошел тест, вызовите его в поле TV Input Options с помощью
@CHUNK
связывание.
Еще одно примечание: я не могу вспомнить, доступен ли текущий Ресурс на ТВ как $modx->resource
или же $resource
, но это может быть что-то, что вы хотите перепроверить.