Фильтрация по TV в Tickets

Делаю форму для фильтрации тикетов по TV:
&where=`{"tvname":"[[!snippet]]"}`
Сниппет:
<?php
$tvname = $_POST['tvname'];
return $tvname;
Когда значение TV приходит непустым, то фильтрация работает. Когда пусто, то результатов нет — это логично. Но как сделать, чтобы «если значение TV пустое, то не делать фильтрацию по этой TV»?
Возможно, горожу велосипед и есть нормальное готовое решение?
nweb
30 декабря 2016, 06:49
modx.pro
1
971
0

Комментарии: 1

Андрей
30 декабря 2016, 13:50
+1
Если используется fenom, то можно так
{set $snippetParams = [
	'param_1' => 'param_value' // и т.д. все параметры вызова сниппета
]}

{set $tvname = $.post['tvname']}

{if $tvname?}
	{$snippetParams['where'] = '{"tvname":"'~$tvname~'"}'}
{/if}

{$_modx->runSnippet('snippetName', $snippetParams)}

Если fenom не используется, то можно создать сниппет обертку и в нем уже проверять есть ли в POST tvname или нет, принцип тот же

Сам сниппет
$snippetParams = $scriptProperties;

if (!empty($_POST['tvname'])) {
	$snippetParams['where'] = '{"tvname":"'.$_POST['tvname'].'"}';
}

return $modx->runSnippet($element, $snippetParams);

Вызывать на странице так
[[!имя_созданного_сниппета?
	&element=`имя_вызываемого_сниппета` //tickets или что-то другое
	&param_1=`param_value` // и т.д. все параметры вызова сниппета без where
]]
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1